0

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

%2C%E3%81%9D%E3%81%AE%E4%BB%96

因此,我认为这与编码有关。如果我查看请求的 HTTP 标头,我会注意到以下差异。在 IE 中:

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

在火狐中:

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

我认为 IE 8 标头没有明确说明 UTF-8 编码,即使它是在 HTML 文档的元标记中指定的。我不确定这是否是问题所在。我将不胜感激,如果您需要更多信息,请告诉我。

4

1 回答 1

0

确保包含表单的页面具有 UTF-8 作为字符集。在 IE 的情况下,确保这一点的最佳方法是发送一个 HTTP 标头('Content-Type: text/html; charset=utf-8')并添加一个带有内容类型/字符集的元 http-equiv 标签到你的 html (我已经看到这实际上很重要,即使发送了适当的标题)。

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

<form enctype="application/x-www-form-urlencoded; charset=utf-8>
于 2010-10-05T14:38:24.777 回答