字符编码,debian上的语言环境问题

问题描述 投票:0回答:1

我使用vps与debian 9,mariadb 10.3.x,php7.0(标准LAMP)。我不得不更新所有包。删除并安装并导入数据库后,所有字符的外观如下:“Tch rzewski”我检查数据库中的编码(设置为utf8_general_ci),所有表都有相同的内容。在数据库中,我当然有正确的字符串版本。我还检查了输出的语言环境:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=pl_PL.UTF-8
LANGUAGE=
LC_CTYPE="UTF-8"
LC_NUMERIC="UTF-8"
LC_TIME="UTF-8"
LC_COLLATE="UTF-8"
LC_MONETARY="UTF-8"
LC_MESSAGES="UTF-8"
LC_PAPER="UTF-8"
LC_NAME="UTF-8"
LC_ADDRESS="UTF-8"
LC_TELEPHONE="UTF-8"
LC_MEASUREMENT="UTF-8"
LC_IDENTIFICATION="UTF-8"
LC_ALL=UTF-8

我检查每个文件(有meta utf-8)和php中的文件我有ini_set('default_charset','utf-8')我试试

header("Content-Type: text/html; charset=utf-8");

但这没有帮助

我现在能做什么?我可以重新安装服务器,但我不想浪费很多时间

character-encoding debian
1个回答
0
投票

我解决了添加到PDO mysql-attr_init_command的问题。现在所有的pdo命令看起来像:

$db = new PDO('mysql:host='._DBHOST_.';port=8889;dbname='._DBNAME_, _DBUSER_, _DBPASS_, 
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
© www.soinside.com 2019 - 2024. All rights reserved.