Почему мне нужно mb_convert_encoding, чтобы показать правильные символы

Мой веб-сайт имеет кодировку =UTF-8, и mysql DATABASE также настроен на кодировку UTF-8.

Моя проблема в том, что когда я получаю текст из mysql на веб-сайт, мне нужно использовать функцию php mb_convert_encoding(@db_field,'utf-8','iso-8859-1'), чтобы правильно отобразить текст. похоже, что система думает, что mysql DB находится в iso-8859-1.

1 ответ

Решение

Запустите это сразу после подключения к базе данных:

mysqli_query("SET NAMES utf8"); /* or mysql_query */

Недостаточно установить параметры сортировки таблицы в UTF-8, вам также необходимо указать (с помощью этого запроса) кодировку, которая должна использоваться при обмене данными между PHP и сервером MySQL.
Более подробно здесь: SET NAMES utf8 в MySQL?

Обеспечение совместимости с UTF-8 везде сложно; мой контрольный список UTF-8 выглядит следующим образом:

  • Убедитесь, что каждый исходный файл сохранен как UTF-8
  • обеспечивать <meta charset="UTF-8" /> присутствует на всех страницах
  • Убедитесь, что каждая таблица базы данных настроена на использование UTF-8
  • Бежать SET NAMES utf8 после подключения к базе данных
  • Вызов mb_internal_encoding("UTF-8") в начале сценария и использовать mb_ строковые функции, где это возможно
Другие вопросы по тегам