Utf 8 IE8中的亚洲字符在服务器中被乱码;这是由于HTTP头内容类型造成的吗?

Utf 8 IE8中的亚洲字符在服务器中被乱码;这是由于HTTP头内容类型造成的吗?,utf-8,internet-explorer-8,http-headers,content-type,asianfonts,Utf 8,Internet Explorer 8,Http Headers,Content Type,Asianfonts,客户端发出的http请求中的一个请求参数包含日语字符。如果我在Firefox中发出此请求,并在Eclipse中调试参数到达服务器后立即查看参数,则字符看起来很好。如果我使用IE8执行相同的请求,当我在服务器代码中的同一点上查看字符时,字符会变得混乱(不过,在两种浏览器中都可以)。我检查了两种浏览器发出的POST请求,它们都传递相同的字符序列,即: %2C%E3%81%9D%E3%81%AE%E4%BB%96 因此,我认为这与编码有关。如果查看请求的HTTP头,我会注意到以下差异。在IE中: C

客户端发出的http请求中的一个请求参数包含日语字符。如果我在Firefox中发出此请求,并在Eclipse中调试参数到达服务器后立即查看参数,则字符看起来很好。如果我使用IE8执行相同的请求,当我在服务器代码中的同一点上查看字符时,字符会变得混乱(不过,在两种浏览器中都可以)。我检查了两种浏览器发出的POST请求,它们都传递相同的字符序列,即:

%2C%E3%81%9D%E3%81%AE%E4%BB%96
因此,我认为这与编码有关。如果查看请求的HTTP头,我会注意到以下差异。在IE中:

Content-Type: application/x-www-form-urlencoded
Accept: */*
在Firefox中:

Content-Type application/x-www-form-urlencoded; charset=UTF-8
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7

我认为IE8头并没有显式地声明UTF-8编码,即使它是在HTML文档的meta标记中指定的。我不确定这是否是问题所在。非常感谢您的帮助,如果您需要更多信息,请务必告诉我。

请确保包含表单的页面具有UTF-8字符集。在IE的例子中,确保这一点的最好方法是发送一个HTTP头('Content-Type:text/html;charset=utf-8'),并在html中添加一个带有Content-Type/charset的meta-HTTP-equiv标记(我发现这实际上很重要,即使发送了相应的头)

其次,表单还可以指定内容类型:

<form enctype="application/x-www-form-urlencoded; charset=utf-8>

请求是通过AJAX调用发出的,我刚刚修改了该调用,以便它指定UTF-8字符集,因此现在IE和Firefox都将“application/x-www-form-urlencoded;charset=UTF-8”作为内容类型。现在,如果我看一下Eclipse中的角色,它们不再是乱码了。但现在,当它们被渲染回IE时,它们会显示为正方形,而在Firefox中它们却很好。所谓“渲染”,我是指字符出现在JFreeCharts生成的图表中。我希望您能提出其他建议。使用UTF-8就是要对请求/响应链的每一个方面都进行UTF-8编码:您的页面,还有您的数据库(和数据库连接!)。正方形通常表示某处未设置为UTF-8。在这种情况下,我会怀疑您正在查看的页面,因为Firefox显示的字符是正确的。检查IE页面的内容类型(右键单击>页面信息或其他内容)。