Недавно я обновил свое PHP-веб-пространство до 5.6 (с 5.5), и произошло нечто странное. Мой сайт неожиданно отображает символы UTF-8 неправильно, хотя я использую метатег <meta charset="utf-8">
и следующую строку в моем файле .htaccess AddDefaultCharset utf-8
,
После вставки следующей строки в мой PHP-скрипт все снова заработало header('Content-Type: charset=utf-8');
,
Это произошло как на моем веб-пространстве (где у меня нет доступа к файлу php.ini), так и на моем локальном сервере. Поскольку я также использую другие сценарии PHP, я не хочу вставлять header('Content-Type: charset=utf-8');
во все конфигурационные файлы …
Что может быть причиной?
Если вы не хотите использовать функцию header () в php, вы можете использовать meta
тег HTML.
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Пожалуйста, проверьте, помогает ли это.
Как я прочитал:
настройка php.ini default_charset изменилась в PHP 5.6 с пустого на UTF-8. Это может нарушить вывод HTML, если вы попытаетесь установить другую кодировку в заголовке HTML. Он также может нарушать функции, такие как htmlentities () и htmlspecialchars.
ЦСИ: https://www.saotn.org/php-56-default_charset-change-may-break-html-output/
В моем случае я использовал для установки кодировки по умолчанию UTF-8 с помощью функции php mb_http_output('UTF-8');
хотя для PHP5.6 я удалил эту функцию, так как она казалась избыточной. Это сделало символы снова читаемыми.