Как браузер переопределяет настройки заголовка UTF-8 и как мне его остановить? - PullRequest
1 голос
/ 29 ноября 2011

Я создал сайт с простой системой CMS. Весь текст вводится в стандартном текстовом поле без какой-либо необычной возможности добавить жирный шрифт или что-то еще: вы просто используете необработанный HTML.

Один из парней, которые внесли свой вклад в это, использует IE7 на старом ноутбуке и (насколько я могу судить не может обновить его или что-то в этом роде). В любом случае, я установил все страницы для использования UTF-8 с этим в заголовке:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

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

Может кто-нибудь сказать мне, какие настройки на его ПК могут вызывать это переопределение? Я рассказал ему, как получить доступ к кодировке в IE7 и установить ее в «auto», но она, очевидно, возвращается, так что, возможно, есть что-то еще.

1 Ответ

2 голосов
/ 29 ноября 2011

Элемент <meta> может только сообщать браузеру, что делать - он не может (насколько я знаю) переопределять любые заголовки, отправляемые сервером. Мета-элемент должен появиться как можно раньше в <head> документа. Вы также можете попробовать более новую <meta charset="utf-8">.

Более надежный подход - отправить заголовок с сервера . Исходя из тегов вопроса, я предполагаю, что у вас есть доступ к PHP. Вы можете установить заголовок следующим образом:

<?php
    header ('Content-type: text/html; charset=utf-8');
?>

Вы хотите поместить его прямо вверху документа, прежде чем HTML-код будет передан в браузер.

...