Почему мне нужно 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_
строковые функции, где это возможно