Вопрос

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

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

Это, кажется, конкретно для IE 8 в режиме стандартов. В IE 8 Quriks: это работает. IE 7 стандартов: это работает. IE 7 quirks: работает. Я не уверен, как стандартный режим приведет к этой проблеме.

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Кодировка по умолчанию 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 атрибут In <html> тег, чтобы объявить язык

    <html lang="zh">

для китайцев

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

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

(Редактор, который я использую, позволяет легко переключать файловые форматы легко, а не уверен, как действовать в противном случае, но стоит взглянуть на различные форматы файлов UTF, т.е. (8) просто не нравится MARKET 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 байта, нужно будет предположить, что проблемы с пробелом и неправильно понятые символы могут быть связаны с неправильными байтами в источниках.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top