Переключите кодировку веб-сайта с ISO-8859-1 на UTF-8
Я пытаюсь преобразовать свою существующую веб-страницу PHP в кодировку UTF-8.
Для этого я сделал следующие вещи:
- указан UTF-8 в качестве кодировки в теге мета-контента в начале моей веб-страницы.
- измените набор символов по умолчанию на UTF-8 в php.ini.
- указан UTF-8 в качестве кодировки iconv в файле php.ini.
- указан UTF-8 в моем файле.htaccess с использованием: AddDefaultCharset UTF-8.
И все же после всего этого, когда я повторяю mb_internal_encoding(), он отображается как ISO-8859-1. Что я здесь упускаю? Я знаю, что мог бы использовать auto_prepend, чтобы прикрепить скрипт, который изменяет кодировку по умолчанию на UTF-8, но я просто пытаюсь понять, чего мне не хватает.
Спасибо
2 answers
mb_internal_encoding()
не влияет на вывод ваших сценариев как таковых, он влияет на кодировку по умолчанию при использовании многобайтовых строковых функций и преобразование входных данных POST и GET.
Просто установите с помощью
mbstring.internal_encoding='UTF-8'
В вашем файле php.ini или программно с помощью:
mb_internal_encoding('UTF-8');
Говоря о функциях mb_, вам нужно будет переписать свои сценарии, чтобы использовать их, например, mb_strlen()
вместо strlen.()
и т.д.
Также проверьте, какой тип содержимого HTTP заголовки выводятся, хотя, судя по тому, что вы сделали, все должно быть в порядке.
Если вы используете базу данных, вам также придется преобразовать ее и указать, что вы используете UTF-8 при подключении к ней.
В документации указано, что вы можете УСТАНОВИТЬ эту переменную с помощью
/* Set internal character encoding to UTF-8 */
mb_internal_encoding("UTF-8");
Что должно избавить вас от вашей проблемы:)