我在进行测试时注意到了一些东西 “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中设置了特定的编码。
对于此测试,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十六进制等效表示。
有人可以证明警告框中真正显示的内容是正确的吗?
对于此测试,IE9编码已设置为西方字母(ISO) 警告框显示:195 169 116 195 169
对我而言,这似乎很奇怪 我得到了我期望的测试结果。
有人可以证明警告框中显示的内容是正确的吗?
答案 0 :(得分:2)
字符串"été"
包含三个字符,其中包含脚本显示的Unicode代码编号。这不依赖于字符编码。 JavaScript代码适用于字符,或者更准确地说,适用于Unicode代码单元,而不是用于表示字符的字节。
如果实际编码是UTF-8并且您使浏览器将其视为某种8位编码,这可能是您所说的“西方字母表(ISO)”,则浏览器会错误解释该字节的八位字节。 UTF-8表示,就好像每个表示一个字符