UTF-8 HTML без спецификации отображает странные символы - PullRequest
9 голосов
/ 01 марта 2012

У меня есть некоторый HTML, который содержит некоторые символы-символы (€, ó, á).HTML-документ сохраняется как UTF-8 без спецификации.Когда я просматриваю страницу в браузере, чужие символы, кажется, заменяются более странными комбинациями символов (â, ¬, Ã, Ã).Только когда я сохраняю свой HTML-документ как UTF-8 с BOM, символы затем отображаются правильно.

Я бы действительно предпочел не включать BOM в мои файлы, но кто-нибудь знает, почему этоможет сделать это?и как это исправить?(кроме спецификации)

Ответы [ 2 ]

16 голосов
/ 01 марта 2012

Возможно, вы не указали правильный набор символов в вашем HTML-файле. Спецификация (спасибо @Jukka) отправляет браузер в режим UTF-.8; при его отсутствии необходимо использовать другие средства для объявления документа UTF.8.

Если у вас есть доступ к конфигурации вашего сервера, вы можете убедиться, что сервер не отправляет неверную информацию о наборе символов. Смотрите, например Как изменить кодировку по умолчанию на UTF-8 для Apache?

Если у вас есть доступ только к вашему HTML, добавление этого метатега в заголовок документа должно помочь:

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

или, как указывает @Mathias, новый HTML 5

<meta charset="utf-8"> 

(действительно только в том случае, если вы используете тип документа HTML 5, против которого больше нет веских аргументов, даже если вы не используете разметку HTML 5.)

2 голосов
/ 01 марта 2012

Вставить <meta charset="utf-8"> в head.
Или установить заголовок Content-Type: text/html;charset=utf-8 на стороне сервера
Вы также можете добавить .htaccess: AddDefaultCharset UTF-8 подробнее здесь http://www.askapache.com/htaccess/setting-charset-in-htaccess.html

...