Противоречивые результаты от установки набора символов подключения - PullRequest
0 голосов
/ 28 июня 2010

Я почти выполнил задачу по перестройке моего веб-приложения, чтобы он был должным образом «осведомлен о UTF-8». Однако я обнаружил, что если я установлю набор символов подключения на utf8 с использованием mysqli_set_charset, то результат будет выглядеть неправильно (в действительности это выглядит так, как если бы кодировка страницы была неверно идентифицирована), тогда как если я не устанавливать набор символов подключения, он отображается правильно.

Например, строка, хранящаяся в одной таблице в моей базе данных - набор символов столбца utf8 - отображается правильно как Página principal, если I не устанавливает набор символов подключения. Если я do установил набор символов соединения, он выглядит как Página principal.

Детали: PHP-скрипты, которые я использую для проверки этого поведения, имеют следующий метатег в разделе <head>:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Я определил, что набор символов по умолчанию для новых подключений на моем хосте - latin1. База данных, к которой я подключаюсь, имеет набор символов по умолчанию utf8. Вот код, используемый для создания ссылки на базу данных:

$cxn = @mysqli_connect('localhost', $db_user, $db_password, $db_database) or die('Failed to connect to the database.');
mysqli_set_charset($cxn, 'utf8');
mysqli_query($cxn, 'SET SESSION sql_mode = \'TRADITIONAL\'');

Дополнительно: в случае, если это послужит дополнительным судебным доказательством, я обнаружил, что если я просматриваю страницу в Firefox и вручную изменяю кодировку символов на ISO-8859-1, вышеупомянутая строка выглядит как Página principal.

1 Ответ

1 голос
/ 28 июня 2010

Вероятно, это связано с тем, что кодировка символов отличалась при вставке данных и, следовательно, могла быть сохранена в неправильной кодировке (установлено ли для кодировки таблицы utf8?)Убедитесь, что только что вставленные данные возвращаются нормально.(Данные, которые были вставлены с подключением utf8)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...