JavaScript字符编码+ Internet Explorer 9编码

时间:2012-03-25 15:11:15

标签: javascript character-encoding internet-explorer-9

我在进行测试时注意到了一些东西 “stange things”涉及字符编码。

对于每个测试,我在Internet Explorer 9 Web浏览器中加载了一个HTML页面 我的HTML页面采用UTF-8编码 这是我的HTML页面的代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    var strChaine = "été";
    alert(strChaine.charCodeAt(0) +
            " " + strChaine.charCodeAt(1) +
            " " + strChaine.charCodeAt(2) +
            " " + strChaine.charCodeAt(3) +
            " " + strChaine.charCodeAt(4));
</script>
</head>
<body>

</body>
</html>

HTML页面包含用于显示警告框的JavaScript代码。

在每次测试之前,我通过右键单击然后在编码菜单中选择一个选项,在IE9中设置了特定的编码。

测试1

对于此测试,IE9编码已设置为UTF-8 警告框显示:233 116 233 NaN NaN

我觉得很奇怪。
由于我的HTML页面是用UTF-8编码的,IE9使用UTF-8解码我的HTML页面,我希望显示警告框:195 169 116 196 116
0d195 0d169 0d116 0d196 0d116是字符串“été”的UTF-8十进制表示。
0xC3 0xA9 0x74 0xC3 0xA9是UTF-8十六进制等效表示。

有人可以证明警告框中真正显示的内容是正确的吗?

测试2

对于此测试,IE9编码已设置为西方字母(ISO) 警告框显示:195 169 116 195 169

对我而言,这似乎很奇怪 我得到了我期望的测试结果。

有人可以证明警告框中显示的内容是正确的吗?

1 个答案:

答案 0 :(得分:2)

字符串"été"包含三个字符,其中包含脚本显示的Unicode代码编号。这不依赖于字符编码。 JavaScript代码适用于字符,或者更准确地说,适用于Unicode代码单元,而不是用于表示字符的字节。

如果实际编码是UTF-8并且您使浏览器将其视为某种8位编码,这可能是您所说的“西方字母表(ISO)”,则浏览器会错误解释该字节的八位字节。 UTF-8表示,就好像每个表示一个字符