3 回答
将页面的编码标记为 UTF-8,这个问题就会消失。如果没有此提示,Firefox 有时也会无法自动检测您的编码。而且您可能已经手动更改了 IE 中的编码一次,因此它成为未标记页面的新默认值。
把它放在你的<HEAD>:
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
如果您的内容不是真正的 UTF-8,那么您将需要使用另一种方法。FORM 上有一个 html 属性,它向 IE 提示您希望将非 ANSI 代码页字符作为 UTF-8 发送,但使用正确的内容类型要好得多。
此外,地址栏可能不是查看结果文本的最佳位置,因为我上次检查时,它不能可靠地处理非 ACP 字符。确保您正在查看实际的请求数据。
如果您正在谈论在浏览器的地址栏或搜索框中输入文本,而不是特定网页,我不会在英文 Windows 7 上重现此问题。也许您使用的是非常旧的 Windows 版本,并且您的系统 ANSI 代码页不包含该字符;Win95/Win98/WinME肯定会有这个问题。
编辑添加:在 IE 8 中,输入您在包含此内容的页面上指定的字符完全符合我的预期。我已经用 Fiddler 验证了这一点。无论您遇到什么问题,都可能与您迄今为止所描述的不同。
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
</HEAD>
<BODY>
<form accept-charset="utf-8" method="get" action="http://www.example.com/something">
<input type="text" name="q">
<input type="submit">
</form>
</BODY>
</HTML>
除非您为页面本身使用替代编码,否则您实际上不需要接受字符集。但出于说明目的,我将其保留。为了让它真正有用,至少在早期版本的 IE 中(事情可能已经改变;我的一个同事在 IE5 左右指定了这种行为),你需要一个_charset_没有价值的隐藏的“”字段来鼓励浏览器标记它实际使用了什么字符集,但这在 utf-8 页面中是多余的)。
它可能是字体安装或 URL 编码问题
我在处理 CJK 字符时看到的主要问题之一是安装操作系统时默认未安装东亚语言字体。即使没有完成安装,这些字符也能在 MS Word 中正确显示。为了确保操作系统中的所有应用程序都可以处理 CJK(中文、日文和韩文),最好进行以下练习
- 转到控制面板
- 选择区域和语言选项
- 转到语言选项卡
- 选中复选框以安装东亚语言字体
希望您随身携带 Windows CD 以继续此操作。
在那之后,IE8 希望能正确显示字符。
此外,如果您正在执行任何 url 编码,请确保在处理非 ASCII 字符时始终使用 UTF-8 作为字符编码。
首先,IE 认为汉字可以在 UTF-8 中“按原样”发送,而 Firefox 认为它们需要进行 URL 编码。
你看过网络上的 GET 请求吗?我敢打赌,它实际上是一个三字节序列,并且您用来显示它的工具正在将其缩减为 ?。