Я боролся с той же проблемой, но усилился, когда мне нужно было отобразить много разных языков на одной странице. Вот что я узнал до сих пор ...
Это действительно проблема со шрифтом. Используемый шрифт не содержит необходимых иностранных символов, поэтому вы видите неработающие символы. Большинство браузеров достаточно умны, чтобы заменить шрифт версией юникода, которая содержит необходимые символы, но они оставили эту функцию вне 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».