Я провел много исследований по этому вопросу и провел множество испытаний.
Насколько я понимаю, заголовки HTTP устанавливаются только в том случае, если для этого настроен веб-сервер, и могут по умолчанию использоватьконкретная кодировка, даже если разработчики не намеревались этого.Мета-заголовки устанавливаются только в том случае, если разработчик решил сделать это в своем коде ... это также может быть установлено автоматически некоторыми средами разработки (что проблематично, если разработчик не учел это).
I 'мы обнаружили, что если они установлены вообще, они часто конфликтуют друг с другом.например.заголовок HTTP говорит, что страница iso-8859-1
, а метатег указывает windows-1252
.Я мог бы предположить, что одно заменяет другое (вероятно, метатег), но это кажется довольно ненадежным.Также кажется, что очень немногие разработчики учитывают это при работе со своими данными, поэтому динамически генерируемые сайты часто смешивают кодировки или используют кодировки, которые они не собираются использовать через разные кодировки, поступающие из их базы данных.
Мой вывод заключается в следующем:
- Проверьте кодировку каждой страницы, используя
mb_detect_encoding()
. - Если это не удастся, я использую мета-кодирование (
http-equiv="Content-Type"...
). - Если мета-тип содержимого отсутствует, я использую заголовки HTTP (
content_type
). - Если нет http-типа содержимого, я предполагаю UTF-8.
- Наконец, я конвертирую документ, используя mb_convert_encoding ().Тогда я очищаю это для содержания.(Я специально исключил кодировку для преобразования, чтобы избежать этого обсуждения.)
Я пытаюсь получить как можно больше точного контента, а не просто игнорировать веб-страницы, потому что разработчикинеправильно установил свои заголовки.
Какие проблемы вы видите при таком подходе?
Собираюсь ли я столкнуться с проблемами с помощью mb_detect_encoding ()и методы mb_convert_encoding ()?