Обновление PHP 5.6 и специальные символы

У меня есть сайт, на котором я использовал php для включения разделов, а не для дублирования кода для каждой страницы.
Однако недавно мой веб-хостинг обновил PHP до 5.6, и теперь все мои Æ, Ø и Å дают мне заменяющий символ ( ).
Я не запускаю никаких баз данных, и настройка кодировки в html не помогла.

Я очень неопытен с PHP, поэтому я понятия не имею, как это исправить.
Пожалуйста, любая помощь будет замечательной!

У меня была такая же проблема после обновления с php 5.5. до 5.6.

Решил его, установив default_charset в пустую строку в моем скрипте:

 ini_set("default_charset", ""); 

Или если у вас есть acceess для php.ini, вы можете установить default_charset = "" вместо этого.

Дополнительная информация: https://www.saotn.org/php-56-default_charset-change-may-break-html-output/

PHP 5.6 изменяет значение по умолчанию default_charset на UTF-8 . Значение лучше установить.

Если кодировка ваших php-файлов – ISO-8859-1 (все в каталоге), вы можете легко поместить файл .htaccess в корневой каталог:

 php_value default_charset ISO-8859-1 

Если только некоторые из ваших файлов находятся в ISO-8859-1, вы можете легко отправить заголовок в первой строке файла php (нет необходимости в default_charset):

 <?php header('Content-Type: text/html; charset=iso-8859-1'); ?> 

Или преобразовать кодировку php textfiles в utf8 и не изменять значения по умолчанию.

На данный момент лучше всего переходить на PHP 5.5 или 5.4, из-за того, что CBroe объяснил в своем комментарии тем, что PHP 5.6 теперь устанавливает кодировку по умолчанию как UTF-8, и многие сайты по-прежнему не готовы к этому. У меня была такая же проблема после перехода на новый сервер, поэтому я понизился до PHP 5.5 и автоматически все специальные символы снова отображаются правильно. Если вы используете WHM, используйте EasyApache для восстановления Apache и затем выберите нужную версию PHP при появлении запроса.

Я лично считаю, что разработчики PHP должны лучше предупреждать пользователей, я имею в виду, что при обновлении до версии 5.6 могут возникать проблемы с особыми символами для незашифрованных веб-сайтов или приложений UTF-8. То, что они делали, просто навязывало UTF-8 миллионам разработчиков по всему миру, было слишком быстрым или даже слишком радикальным.

Если у вас есть веб-сервер с несколькими хостами, особенно со старыми веб-сайтами и несколькими языками , для максимальной совместимости с более ранними версиями PHP, такими как 5.4, просто принудительно сбросьте значение default_charset в /etc/php…/php.ini:

В глобальном разделе [PHP] найдите этот ключ и отредактируйте его так:

 default_charset = "" 

Это не будет заставлять PHP устанавливать кодировку UTF-8 для всех php-файлов, особенно устаревшую или национальную кодировку, такую ​​как windows-1251 , windows-1257 , iso-8859-1 , iso-8859-2 , ISO-8859-13 и аналогичные ,

Или, если вы разработчик, обязательно используйте ответ Роба и добавьте код непосредственно в php-приложение ini_set("default_charset", "");