Подтвердить что ты не робот

Почему IE не может показать кодированный текст UTF-8?

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

Текст кодируется в кодировке 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, символы отображаются в исходном представлении правильно.

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

4b9b3361

Ответ 1

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

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

<!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" />

Ответ 2

Кодировка 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

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

Ответ 4

Мне удалось исправить ту же проблему, изменив формат файла 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-Без спецификации (иногда акценты появлялись, иногда в других странных символах, и это не выглядело как проблема с передачей пробелов для меня...) Обратите внимание, что я играл с lang = "fr" и lang = "es", но во всех случаях изменение формата файла UTF, похоже, постоянно разрешало проблемы с отображением акцентов.:)

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