ASCII字符>在Javascript中没有正确读取128

时间:2012-04-09 08:36:07

标签: javascript utf-8 character-encoding ansi windows-1252

我有一个包含Javascript文件的HTML。这个脚本包含一个特殊字符,ASCII 152.当我尝试显示charCodeAt时,我得到的结果不同,但从来没有正确的结果。你能建议吗?感谢

的test.html

<script type="text/javascript" charset=SEE BELOW src="test.js">
</script>

使用ANSI编码的TEST.JS文件

function d(a)
{
a=(a+"").split("");
alert(a[1].charCodeAt(0));
};
d("i˜g"); // Note that ˜ is 152 in ASCII
  • 带有x-user-defined charset的TEST.HTML:alert显示63384.使用%63232有效,因为每个char&gt; 128显示为63232 + char。
  • TEST.HTML with utf-8 charset:alert显示65533.所有字符&gt; 128显示为65533。
  • 带有Windows-1252字符集的TEST.HTML:警告显示752.我找不到ASCII与显示内容之间的关系。

使用UTF-8编码的TEST.JS文件

function d(a)
{
a=(a+"").split("");
alert(a[1].charCodeAt(0));
};
d("i[x98]g"); // Note that x98 is 152
  • 带有x-user-defined charset的TEST.HTML:alert显示65533.所有字符&gt; 128显示为65533。
  • TEST.HTML with utf-8 charset:alert显示65533.所有字符&gt; 128显示为65533。
  • TEST.HTML with Windows-1252 charset:alert显示65533.所有字符&gt; 128显示为65533。

2 个答案:

答案 0 :(得分:6)

utf8在128-255范围内没有字符,ASCII完全在127处结束... 1中位置"i[x98]g"的字符也是"[",{ {1}}毫无意义。

您的功能可以替换为"[x98]"

角色str.charCodeAt(1)Unicode Character 'SMALL TILDE' (U+02DC,可以写成˜"\u02DC"

答案 1 :(得分:0)

ASCII只有127个字符。 char 152不存在