Японские символы не отображаются правильно в IE 8 ... не уверен насчет более ранних версий - PullRequest
2 голосов
/ 09 июля 2010

URL-адреса, демонстрирующие это поведение, находятся здесь:

http://culturewithinaculture.org/introduction.php
http://culturewithinaculture.org/about.php

Сайт не был официально запущен. Но моя проблема на правой стороне, японская копия. У меня установлен тип документа UTF-8, который, как я думал, должен быть. На Firefox и Safari у меня вообще нет проблем ... показывает нормально. В IE 8, однако, это квадратные поля и недопустимые символы. Самое смешное, что если вы нажмете кнопку «Режим совместимости», она обновит страницу, и все в порядке. Однако это также дало смешанные результаты, мой друг попробовал его на своей машине XP с IE 8, и режим совместимости не работал (все еще имелись квадраты для нераспознанных символов).

Я хочу, чтобы это поддерживало кросс-браузер, и я не хочу заставлять человека из IE нажимать кнопку «Режим совместимости» или что-то в этом роде. Я знаю, что я мог бы просто сделать японское копирование большого изображения, но я бы хотел, чтобы текст был доступен для выбора и HTML, если это возможно.

Кто-нибудь из вас сталкивался с этой проблемой? Есть ли какая-то особая магия только в CSS или jQuery, которую я могу использовать для правильного отображения текста? Возможно трюк со шрифтом?

Вся помощь очень ценится!

Ответы [ 8 ]

2 голосов
/ 21 июля 2011

Если вы используете Windows XP, проверьте поддержку "восточноазиатского языка".

2 голосов
/ 09 июля 2010

Вот ваши заголовки ответа:

Date: Thu, 08 Jul 2010 22:52:12 GMT
Server: Apache/2.0.54
X-Powered-By: PHP/4.4.8
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5319
Keep-Alive: timeout=5, max=88
Connection: Keep-Alive
Content-Type: text/html

Обратите внимание, что в заголовке Content-Type отсутствует атрибут charset, и поэтому веб-браузер вынужден использовать кодировку по умолчанию для платформы, которая часто является ISO-8859-1. FireFox действительно достаточно умен, чтобы автоматически определять правильную кодировку и применять ее (вы можете проверить это с помощью Вид> Кодировка символов ).

Поскольку эти страницы кажутся сгенерированными PHP, лучшее, что вы можете сделать, это добавить следующее в top ваших страниц PHP (или в заголовок, если есть), before любой символ был отправлен в тело ответа:

header('Content-Type: text/html; charset=UTF-8');

Смотри также:

1 голос
/ 10 декабря 2011

У меня была похожая проблема, оказалось, что это проблема с настройками IE8 по умолчанию.Если вы зайдете в Инструменты -> Свойства обозревателя -> Шрифты и выберете японский из выпадающего списка, вы увидите, что для этого языка не выбран шрифт по умолчанию (и некоторые другие).Просто выберите шрифт, и все готово.Блестящий ход от команды IE, верно?

0 голосов
/ 17 декабря 2013

Это сработало для меня:

Отключить поддержку азиатских языков (Панель управления | Региональные и языковые параметры | Языки - снимите флажок «Установить файлы для восточноазиатских языков»);перезагружать;затем повторно включите, повторно проверив ту же самую коробку;и перезагрузите компьютер.Вуаля!

Для повторного включения поддержки азиатских языков потребуется установочный диск Win XP.

0 голосов
/ 06 февраля 2013

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

Это действительно проблема со шрифтом. Используемый шрифт не содержит необходимых иностранных символов, поэтому вы видите неработающие символы. Большинство браузеров достаточно умны, чтобы заменить шрифт версией юникода, которая содержит необходимые символы, но они оставили эту функцию вне IE8 .

Решение IE=EmulateIE7

Мне не нравилась идея заставить IE8 вести себя как IE7 и при этом обменять одно решение на список других проблем. После некоторых копаний и небольшого тестирования я узнал, что даже это не полное решение, потому что пользователи IE7, у которых нет установленного шрифта, поддерживающего восточноазиатские языки, также будут видеть неработающие символы. (В моих тестах с использованием «Arial» в качестве шрифта на новой установке XP с IE7 это имело место.)

Так почему для некоторых работает принудительное включение IE8 в режим IE7? Из того, что я понял, когда MS Office установлен, он поставляется с «Arial Unicode MS», который содержит символы Восточной Азии и поэтому работает как запасной вариант. После установки «Arial Unicode MS» на моем XP IE7, символы показали нормально. И после того, как мой сайт стал вести себя как IE7, в IE8 символы тоже хорошо выглядели. Тем не менее, это в основном превращает IE8 в IE7, и кто этого хочет?

Примечание: я экспериментировал с обертыванием мета X-UA-Compatible в условный комментарий, чтобы IE9 не вел себя как IE7, но при этом кнопка совместимости вызывала отображение, которого я также хотел избежать.

Мое решение

Не уверен, что в этой проблеме есть серебряная пуля, но я пришел к выводу ...

Если мы определим «Arial» как семейство шрифтов, а у пользователя установлен «Arial Unicode MS», его браузер должен будет заменить шрифт по мере необходимости во всех браузерах, кроме IE8. Поскольку IE8 не достаточно умен, чтобы автоматически выполнять перестановку, мы можем передать шрифт внутри себя через специальный класс IE8 ...

Добавить условные комментарии к цели IE8 ...

<!--[if IE]><![endif]--> 
<!doctype html>
<!--[if lt IE 7 ]><html class="ie6"><![endif]-->
<!--[if IE 7 ]><html class="ie7"><![endif]-->
<!--[if IE 8 ]><html class="ie8"><![endif]-->
<!--[if IE 9 ]><html class="ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html><!--<![endif]-->

Тогда в нашем CSS мы можем добавить ...

BODY {font-family:Arial, Verdana, Helvetica}
.ie8 BODY {font-family:'Arial Unicode MS', Arial, Verdana, Helvetica}

Это исправит проблему, если у пользователя установлен Arial Unicode MS. Чтобы обеспечить поддержку, мы можем дополнительно загрузить «Arial Unicode MS», включив его с @font-face {}, но «Arial Unicode MS» занимает 22 МБ, поэтому не уверен, что это целесообразно. Для моих целей я рассматриваю предложение «У вас проблемы с этим?» ссылка, которая научит пользователей, как загрузить и установить «Arial Unicode MS».

0 голосов
/ 17 января 2011

Я часто использую почти точно такой же заголовок, что и страница, на которую вы ссылались (см. Предостережение ниже), чтобы обслуживать свои японские страницы без IE = EmulateIE7 , и у меня не было проблем, которые вы описываетена IE8.Я вставил это со своей собственной страницы, чтобы подтвердить:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="EN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>

То, что я говорю тогда, это: нет никакого способа, которым этот HTML вызывает какие-либо собственные проблемы - кромеза одну крошечную разницу - я бы изменил ваш HTML, чтобы включить метатег в качестве первого элемента в разделе заголовка , то есть над заголовком.

У меня было еще 2 аналогичных проблемы и в случаевышеперечисленное не помогает, они были:

  • Кодировка файла, фактически содержащего эти символы: utf8 или utf8y - последний вызывает различные проблемы, обычно только с IE - это может толькозатрагивать статически обслуживаемые страницы, такие как моя, хотя

  • В конфигурации сервера Apache свойство AddDefaultCharset было установлено в значение ON.Чтобы исправить это, необходимо отправить запрос по электронной почте моему провайдеру

Из документов Apache:

AddDefaultCharset : В этой директиве указывается имянабора символов, который будет добавлен к любому ответу, который не имеет какого-либо параметра в типе содержимого в заголовках HTTP.Это переопределит любой набор символов, указанный в теле документа через тег META.Параметр AddDefaultCharset Off отключает эту функцию.AddDefaultCharset On включает внутреннюю кодировку Apache по умолчанию iso-8859-1, как того требует директива.

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

Через много часов после прочтения и тестирования ЕДИНСТВЕННЫЙ способ, которым я смог заставить это работать, - добавление следующего кода.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">

Насколько мне известно, это заставляет IE 8 использоватьрежим совместимости.Это работает для обеих ссылок, которые я включил выше.Я хотел бы знать, как исправить это, не форсируя этот «режим», но пока он работает, и я доволен им.

Спасибо за все предложения.

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

Ваш метатег выглядит следующим образом.

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

Один другой сайт

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

Конечно, любой браузер должен правильно обрабатывать оба.Но, пожалуйста, попробуйте.

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