Кодировка Charcter, проблема с локалью в Debian - PullRequest
0 голосов
/ 24 апреля 2019

Я использую 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");

но это не помогло

Что я могу сделать сейчас?Я могу переустановить сервер, но я не хочу тратить на это много времени

1 Ответ

0 голосов
/ 24 апреля 2019

Я решил проблему с добавлением в 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...