Отображение символов Юникода в HTML
Я хочу просто отобразить ТИК ( ✔ ) и перекрестные ( ✘ ) символы на HTML - странице, но он отображается как поле или goop â â" - очевидно, что-то связанное с кодировкой.
Я установил метатег, чтобы показать utf-8, но, очевидно, я что-то упускаю.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Редактировать/Решение: из комментариев, сделанных с помощью FireBug, я обнаружил, что заголовки, передаваемые моей страницей, на самом деле были "Content-Type: text/html", а не UTF-8. Глядя на формат файла с помощью Notepad++ показал, что мой файл был отформатирован как "UTF-8 без спецификации". Изменение этого на просто UTF-8 символы теперь отображаются правильно... но firebug по-прежнему, похоже, указывает на тот же тип контента.
5 ответов:
вы должны убедиться, что заголовки HTTP-сервера верны.
в частности, заголовок:
Content-Type: text/html; charset=utf-8должны присутствовать.
метатег игнорируется браузерами, если присутствует заголовок HTTP.
также убедитесь, что ваш файл на самом деле закодирован как UTF-8 перед его обслуживанием, проверьте/попробуйте следующее:
- убедитесь, что ваш редактор сохранить его как UTF-8.
- убедитесь, что ваш FTP или любая программа передачи файлов не беспорядок с этим файлом.
- попробуйте с HTML-кодированных объектов, как
&#uuu;.- чтобы быть действительно уверены, создать шестнадцатеричное представление файла и посмотрите, как персонаж, в книгах, следует Е2 9С 94 .
Примечание: Если вы используете символ Юникода, для которого ваша система не может найти глиф (без шрифта с этим символом), Ваш браузер должен отображать знак вопроса или какой-либо блок, подобный символу. Но если вы видите несколько римских символов, как вы делаете, это означает кодировку проблема.
Я знаю, что ответ уже принят, но хотел бы отметить несколько вещей.
задание
content-typeиcharsetочевидно, что это хорошая практика, делать это на сервере намного лучше, потому что это обеспечивает согласованность в вашем приложении.однако, я бы использовал
UTF-8только когда язык моего приложения использует много символов, которые доступны только вUTF-8кодировка. Если вы хотите показать символ Юникода или символ в одном из случаях, вы можете сделать это без измененияcharsetвашей страницы.
HTMLвизуализаторы всегда были в состоянии отображать символы, которые не являются частью кодировки набора символов страницы, пока вы упоминаете символ в егоnumeric character reference (NCR). Звучит странно, но это правда.так что, даже если ваш
htmlимеет заголовок, который утверждает, что он имеет кодировкуansiили каких-либоisocharsets, вы можете отобразить флажок, используя его ссылку на символ html, в десятичном формате - ✓ или в hex - ✓так его немного трудно понять, почему вы столкнулись с этой проблемой на ваших страницах. Можете ли вы проверить, правильно ли значение NCR, это хорошая ссылка http://www.fileformat.info/info/unicode/char/2713/index.htm
убедитесь, что вы действительно сохраняете файл как UTF-8, в качестве альтернативы используйте HTML-объекты (
&#nnn;) для специальных символов.
В отличие от предложенного Николя,
metaтег на самом деле не игнорируется браузерами. Тем не менее,Content-TypeHTTP-заголовок всегда имеет приоритет над наличиемmetaтег в документе.поэтому убедитесь, что вы либо отправляете правильную кодировку через HTTP-заголовок, либо вообще не отправляете этот HTTP-заголовок (не рекомендуется). Элемент
metaтег в основном является резервным вариантом для локальных документов, которые не отправляются через HTTP-трафик.использование HTML-объектов должно также следует рассматривать обходной путь-это на цыпочках вокруг реальной проблемы. Настройка веб-сервера должным образом предотвращает много неприятностей.
Я думаю, что это проблема с файлом, вы просто сохранили свой файл в 1-байтовой кодировке, такой как latin-1. Google до вашего редактора и как установить файлы в utf-8.
интересно, почему есть редакторы, которые не используют по умолчанию utf-8.
Comments