4

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

测试.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:警报显示 63384。使用 %63232 有效,因为每个 char >128 都显示为 63232+char。
  • 带有 utf-8 字符集的 TEST.HTML:警报显示 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
  • 带有 x 用户定义的字符集的 TEST.HTML:警报显示 65533。所有 > 128 的字符都显示为 65533。
  • 带有 utf-8 字符集的 TEST.HTML:警报显示 65533。所有 > 128 的字符都显示为 65533。
  • 带有 Windows-1252 字符集的 TEST.HTML:警报显示 65533。所有 > 128 的字符都显示为 65533。
4

2 回答 2

6

utf8 在 128-255 范围内没有字符,而 ASCII 完全以 127 结尾......而且位置1in的字符"i[x98]g"是 a "[", the"[x98]"是没有意义的。

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

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

于 2012-04-09T08:45:20.210 回答
0

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

于 2012-04-09T08:41:52.147 回答