Почему IE не показывает кодированный в кодировке UTF-8? - PullRequest
27 голосов
/ 13 августа 2010

У меня есть несколько китайских иероглифов, которые я пытаюсь отобразить на веб-сайте Kentico.Этот текст копируется / вставляется в редактор Kenticos FCK, а затем сохраняется и появляется на сайте.В Firefox, Chrome и Safari символы отображаются точно так, как и ожидалось.В режиме стандартов IE 8 я вижу только поля.

Текст кодируется в кодировке UTF-8, и, насколько я могу судить, он правильно закодирован в ответе с сервера.На странице также есть заголовок ответа Content-Type: text/html; charset=utf-8 и метатег <meta http-equiv="content-type" content="text/html; charset=UTF-8" />.Когда я загружаю HTML-код с сервера и сравниваю байты рассматриваемых символов с исходным текстовым документом UTF-8, все байты совпадают, за исключением того, что HTML не включает спецификацию.

Кажется, этоспецифично для IE 8 в режиме стандартов.В IE 8 Quriks: это работает.IE 7 Стандарты: это работает.IE 7 Quirks: Работает.Я не уверен, как режим стандартов мог бы вызвать эту проблему.

Странно, если я смотрю на исходный код из IE, символы правильно отображаются в исходном представлении.

Любые предложения о том, что можетбыть неправым здесь?Я что-то упускаю из виду?

Ответы [ 5 ]

11 голосов
/ 13 августа 2010

Я не могу объяснить это подробно.Но это действительно известная проблема.

Вот небольшой воспроизводимый фрагмент кода:

<!DOCTYPE html>
<html lang="en">
    <head><title>test</title></head>
    <body><p>&#65185;<br>0 0</p></body>
</html>

Сохраните его в UTF-8 и просмотрите в IE8.Вы ничего не видите.Замените 0 0 на 00 и перезагрузите страницу.Это будет работать нормально!Это абсолютно удивительно.Как ни странно, замена 0 0 на a a или <br> на </p><p> также исправит это.Это будет как-то связано со сбоями в рендеринге пробелов.

Извините, у меня нет авторитетных ресурсов, подтверждающих это, но это просто еще одно доказательство того, что IE8 не так хорош, как мы ожидаем.Лучше всего попытаться изменить HTML-код и / или построить его шаг за шагом, чтобы он работал в какой-то момент или когда напрасно, добавьте следующий метатег в заголовок, чтобы принудительно перевести IE8 в режим IE7:

<meta http-equiv="X-UA-Compatible" content="IE=7" />
8 голосов
/ 13 февраля 2013

Кодировка IE по умолчанию - западноевропейская (ISO), поэтому вам нужно вручную изменить ее на UTF-8 или принудительно использовать IE для использования заданной кодировки, например:

  • HTML 4.01

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

  • HTML 5

    <meta charset="UTF-8">

И вам также необходимо использовать lang атрибут в теге <html> для объявления языка

    <html lang="zh">

для китайского

3 голосов
/ 13 августа 2010

Просто дикая догадка, но это может быть проблема со шрифтом.Возможно, шрифты, доступные в вашем браузере, могут представлять указанные китайские символы.

2 голосов
/ 26 июля 2013

Мне удалось решить ту же проблему, изменив формат файла UTF на «UTF8 с меткой порядка байтов».

(Используемый мной редактор позволяет легко переключать форматы файлов, не зная, как поступить иначе, но стоит взглянуть на различные форматы файлов UTF, IE (8) просто не нравится UTF8 без меток порядка байтов ...)

Я также смог воспроизвести фрагмент из ответа выше;

<!DOCTYPE html>
<html lang="en">
    <head><title>test</title></head>
    <body><p>&#65185;<br>0 0</p></body>
</html>

Но мои результаты были «прерывистыми», когда в UTF-Without BOM (иногда бывали акценты, а иногда странные символы, и это не выглядело как проблема с отображением пробелов для меня...) Обратите внимание, что я возился с lang = "fr" и lang = "es", но во всех случаях изменение формата файла UTF, похоже, навсегда решило мои проблемы с отображением акцентов.:)

Я не на 100% знаком с UTF, но если символы кодируются с использованием 2 байтов, можно предположить, что проблемы пробелов и неправильно понятые символы могут быть связаны с неправильно выровненными байтами в источниках.,

0 голосов
/ 13 августа 2010

Это может быть то же самое, что заставило Rails 3 добавить символ снеговика к своему выводу: Для чего используется параметр _snowman в формах Ruby on Rails 3?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...