Переключить кодировку веб-сайта с ISO-8859-1 на UTF-8

Я пытаюсь преобразовать существующую веб-страницу PHP для использования кодировки UTF-8.

Для этого я сделал следующее:

  1. указал UTF-8 в качестве кодировки в теге метатеги в начале моей веб-страницы.
  2. измените default_charset на UTF-8 в php.ini.
  3. указал UTF-8 в качестве кодировки iconv в файле php.ini.
  4. указал UTF-8 в моем файле .htaccess, используя: AddDefaultCharset UTF-8.

Но после всего этого, когда я эхо mb_internal_encoding (), он отображается как ISO-8859-1. Что мне здесь не хватает? Я знаю, что могу использовать auto_prepend для прикрепления скрипта, который изменяет кодировку по умолчанию на UTF-8, но я просто пытаюсь понять, что мне не хватает.

Спасибо


person justinl    schedule 22.11.2009    source источник
comment
Возможно ли, что эта функция сообщает о самом файле PHP?   -  person Frank Krueger    schedule 23.11.2009


Ответы (2)


mb_internal_encoding() не влияет на вывод ваших скриптов как таковой, он влияет на кодировку по умолчанию при использовании многобайтовые строковые функции и преобразование входных данных POST и GET.

Просто установите с помощью

mbstring.internal_encoding='UTF-8'

в вашем файле php.ini или программно с помощью:

mb_internal_encoding('UTF-8');

Говоря о функциях mb_, вам нужно переписать свои скрипты, чтобы использовать их, например mb_strlen() вместо strlen.() и т. Д.

Также проверьте, какие заголовки типа содержимого HTTP выводятся, хотя из того, что вы сделали, все должно быть в порядке.

Если вы используете базу данных, вам также придется ее преобразовать и указать, что вы используете UTF-8 при подключении к ней.

person Pete    schedule 22.11.2009
comment
Спасибо. этот mbstring.internal_encoding (в php.ini) работал отлично и был тем, что я искал, по сравнению с установкой его на каждой странице с помощью php. - person justinl; 23.11.2009

В документации указано, что вы можете УСТАНОВИТЬ эту переменную, используя

/* Set internal character encoding to UTF-8 */
mb_internal_encoding("UTF-8");

что должно избавить от вашей проблемы :)

person ty812    schedule 22.11.2009
comment
да, я понимаю, что могу установить кодировку с помощью этой функции, но кажется излишним устанавливать внутреннюю кодировку на каждой странице, когда я уверен, что есть глобальное место для указания кодировки. - person justinl; 23.11.2009