日语字符在IE 8中无法正确显示...不确定早期版本

时间:2010-07-08 22:22:38

标签: jquery css internet-explorer utf-8 internationalization

显示此行为的网址位于:

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

该网站尚未正式发布。但我的问题是在右侧,日本副本。我的文档类型设置为UTF-8,这是我认为它应该是。在Firefox和Safari上我没有任何问题......显示正常。在IE 8中,它是方框和非法字符。有趣的是,如果你点击“兼容模式”按钮,它会刷新页面,一切都很好。然而,这也有不同的结果,我的一个朋友在他们的XP机器上使用IE 8尝试了它,并且兼容模式不起作用(仍然有无法识别字符的方框)。

我希望这是跨浏览器功能,我不想强​​迫IE用户点击“兼容模式”按钮或类似的东西。我知道我可以让日文复制一个大图像,但我希望文本可以选择和HTML,如果可能的话。

你们有没有遇到过这个问题?是否有一些特殊的IE只有CSS或jQuery魔法我可以使用强制正确的文本显示?也许是一个字体伎俩?

非常感谢所有帮助!

8 个答案:

答案 0 :(得分:2)

以下是您的回复标题:

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属性,因此Webbrowser必须使用平台默认编码,通常是ISO-8859-1。 FireFox实际上足够智能,可以自动检测正确的编码并应用它(您可以通过 View> Character Encoding 进行检查)。

由于这些页面似乎是PHP生成的,因此最好的做法是将以下内容添加到PHP页面的 top (或header-include,如果有的话),之前任何字符都已发送到响应正文:

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

另见:

答案 1 :(得分:2)

如果您使用的是Windows XP,请选中“东亚语言”支持。

答案 2 :(得分:1)

我遇到了类似的问题,结果证明是IE8默认设置的问题。如果你去工具 - >互联网选项 - >从下拉列表中选择字体并选择日语,您将看到没有为该语言选择默认字体(以及其他几种字体)。只需选择一种字体就可以了。很高兴从IE团队转来,对吧?

答案 3 :(得分:0)

您的元标记如下。

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

另一个网站的

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

当然,任何浏览器都应该正确处理。但请尝试一下。

答案 4 :(得分:0)

经过大量的阅读和测试之后,我能够让这个工作的唯一方法是添加以下代码。

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

据我所知,这迫使IE 8使用兼容模式。它适用于我上面包含的两个链接。我很想知道如何在不强迫这种“模式”的情况下纠正这种情况,但是现在它起作用了,我很高兴。

感谢所有建议。

答案 5 :(得分:0)

我经常使用与您链接的页面几乎完全相同的标题(请参阅下面的警告),以便在没有 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以包含元标记为头部中的第一项,即标题上方。

我还有其他两个类似的麻烦,并且上面没有帮助,他们是:

  • 实际持有这些字符的文件的编码:utf8或utf8y - 后者导致各种问题,通常只是IE浏览器 - 这可能只影响像我这样的静态服务页面

  • Apache服务器的配置将AddDefaultCharset属性设置为ON。要解决此问题,需要向我的主机提供商发送电子邮件请求

来自Apache文档:

<强> AddDefaultCharset 此伪指令指定将添加到任何响应中的字符集的名称,该响应在HTTP标头中的内容类型上没有任何参数。这将通过META标记覆盖文档正文中指定的任何字符集。 AddDefaultCharset Off的设置禁用此功能。 AddDefaultCharset On根据指令的要求启用Apache的内部默认charset iso-8859-1。

答案 6 :(得分:0)

我一直在争论相同的问题,但放大了我需要在同一页面上显示许多不同语言的地方。这是我到目前为止所学到的......

这确实是一个字体问题。正在使用的字体不包含所需的外来字符,因此您会看到损坏的字符。大多数浏览器足够智能,可以使用包含所需字符的unicode版本替换字体,但是他们将该功能从IE8中删除(ow.ly/hrIB9)。

IE = EmulateIE7解决方案

我对强迫IE8表现为IE7的想法感到畏缩,并且在这样做的情况下交易一个解决方案来解决其他问题。经过一些挖掘和一些测试后,我了解到,即使这是一个完整的解决方案,因为没有安装支持东亚语言的字体的IE7用户也会看到破碎的字符。 (在我的测试中使用'Arial'作为我在使用IE7全新安装XP时的字体就是这种情况。)

那么为什么迫使IE8进入IE7模式呢?从我收集到的,当安装MS Office时,它附带'Arial Unicode MS',其中包含东亚字符,因此可用作后备。在我的XP IE7安装上安装'Arial Unicode MS'后,字符显示正常。在强迫我的网站表现为IE7之后,IE8中的字符显示也很好。不过,这基本上将IE8转变为IE7,谁想要呢?

附注:我尝试在条件注释中包装X-UA-Compatible元以避免IE9也表现为IE7,但这样做会触发兼容性按钮以显示我也想避免的。

我的解决方案

不确定这个问题是否有灵丹妙药,但我提出的是......

如果我们将'Arial'定义为font-family并且用户安装了'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'是22MB,所以不确定是否可取。就我的目的而言,我正在考虑提供一个“看到这个有麻烦吗?”链接将指示用户如何下载和安装'Arial Unicode MS'。

希望这有帮助!

答案 7 :(得分:-1)

这对我有用:

禁用亚洲语言支持(控制面板|区域和语言选项|语言 - 取消选中'为东亚语言安装文件');重启;然后通过重新检查同一个框重新启用;并重新启动。瞧!

重新启用亚洲语言支持需要Win XP安装光盘。