在Javascript中无法正确读取ASCII> 128的字符

Art*_*uro 4 javascript ansi utf-8 character-encoding windows-1252

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

的test.html

<script type="text/javascript" charset=SEE BELOW src="test.js">
</script>
Run Code Online (Sandbox Code Playgroud)

带有ANSI编码的TEST.JS文件

function d(a)
{
a=(a+"").split("");
alert(a[1].charCodeAt(0));
};
d("i˜g"); // Note that ˜ is 152 in ASCII
Run Code Online (Sandbox Code Playgroud)
  • 带有x-user-defined charset的TEST.HTML:alert显示63384.使用%63232有效,因为每个char> 128显示为63232 + char.
  • 带有utf-8字符集的TEST.HTML:alert显示65533.所有字符> 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
Run Code Online (Sandbox Code Playgroud)
  • 带有x-user-defined字符集的TEST.HTML:alert显示65533.所有字符> 128显示为65533.
  • 带有utf-8字符集的TEST.HTML:alert显示65533.所有字符> 128显示为65533.
  • 带有Windows-1252字符集的TEST.HTML:警报显示65533.所有字符> 128显示为65533.

Esa*_*ija 6

对于utf8,在128-255范围内没有字符,并且ASCII完全在127处结束...而且位置1中的字符"i[x98]g"是a "[",这"[x98]"是无意义的.

您的功能可以替换为str.charCodeAt(1).

该字符˜Unicode字符'SMALL TILDE'(U + 02DC,可以写成"\u02DC",或String.fromCharCode(732)