1

У меня есть вопрос администрирования веб-сервера. На этом сайте: http://www.mirkaphoto.hu/ Все страницы, созданные PHP, содержат следующую строку:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

Но это почему-то игнорируется, вероятно, через обработку php-apache, и страница отображается в браузерах с заголовком UTF-8. В результате этого вопросительные знаки (�) отображаются в тексте страницы вместо акцентированных символов (éáöőóüűúí). Я проверял это в Firefox, IE, Chrome и Seamonkey.

Самое странное в этом явлении, что этот симптом появился только вчера, после того, как я обновил свой сервер до Debian 8.0 Jessie с 7.0 Wheezy. Во время обновления я также обновил все остальные пакеты, в том числе apache, php и т.д., И выбрал "да" для перезаписи файлов конфигурации заводскими настройками по умолчанию. После этого я настроил мои конфигурационные файлы так, чтобы все было так, как мне нравится, но я не нашел способа это исправить. До обновления страница отображалась просто отлично.

Вот снимок экрана, на котором вы можете видеть, что Firefox видит определение "charset = iso-8859-2", но по-прежнему отображает страницу с кодировкой UTF-8.

Скриншот

Я подозреваю, что это проблема конфигурации сервера, но также может быть и то, что одна часть компонента обработки (Apache, php) каким-то образом изменилась из-за обновления, что привело к странному поведению. Проблема в том, что я не могу точно определить, что может вызвать эту проблему.

Кто-нибудь может решить эту тайну? Что может быть не так во время обработки страницы?

3 ответа3

3

HTTP-заголовки сервера говорят

Content-Type: text/html; charset=UTF-8

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

Кроме того, перед объявлением HTML есть текст мусора:

[M _2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
0

После долгих поисков мне удалось найти правильное решение. Спасибо, Дэниел Б., за то, что указал мне правильное направление. :)

Похоже, что из-за обновления движок apache2 обрабатывает все текстовые /html- файлы Content-Type "text/html с UTF-8 , не обращая внимания на <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> заявление в фактических файлах html / php. Я не уверен, почему это должно быть хорошо (пожалуйста, объясните, если можете). Тем не менее, решение для избавления от знаков вопроса (�) было следующее:

Решение: я добавил следующую строку в определение apache2 VirtualHost моего веб-сайта в /etc/apache2/sites-available/MySiteName.conf чего перезагрузил конфигурацию сервера с помощью команды service apache2 reload . После этого файлы обслуживаются с соответствующим Content-Type: text/html; charset=iso-8859-2 заголовок кодировки символов.

<VirtualHost * >

# [...Some other configurations before this line]

    #To fix encoding problem, that pages display with UTF-8 header though they are created with iso-8859-2 encoding - giny8i8 2015-12-03
    Header set Content-Type "text/html; charset=iso-8859-2"
        # Source:  http://superuser.com/questions/1008480/charset-iso-8859-2-webpage-displays-with-utf-8-header-question-marks-inste/1008482?noredirect=1#comment1397150_1008482

</VirtualHost>

Дайте мне знать, если это сработает и для вас, если вы столкнетесь с той же проблемой после обновления Debian до 8.0 Jessie! Я искал это в интернете, но не нашел, как это прописано. Отсюда мой ответный пост.

0

Решение, описанное giny8i8, работает. Однако, если по какой-то причине вы хотите, чтобы сообщения об ошибках появлялись в этом наборе символов, вы должны использовать:

Заголовок всегда устанавливает Content-Type "text/html; charset = iso-8859-15"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .