Противоречивые результаты от установки набора символов подключения

0

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

Например, строка, хранящаяся в одной таблице в моей базе данных, - набор символов столбца utf8 - правильно повторяется как Página principal, если я не устанавливаю набор символов соединения. Если я установил набор символов соединения, он выглядит как 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.

Теги:
utf-8

1 ответ

1
Лучший ответ

Это, вероятно, связано с тем, что кодировка символов была различной при вставке данных и, следовательно, могла быть сохранена в неправильном кодировании (установлена ​​ли кодировка таблицы в utf8?). Проверьте, что свеже вставляемые данные верны. (Данные Aka, которые были вставлены с подключением utf8)

  • 0
    Похоже, что это так, как вы говорите. Я думал, что исправил свои неправильно закодированные сохраненные данные, но, похоже, я ошибся, и это действительно все еще неправильно. :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню