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

Characters with ASCII > 128 are not correctly read in Javascript

本文关键字:读取 Javascript 字符 ASCII      更新时间:2023-09-26

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

测试

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

使用 ANSI 编码的测试.JS文件

function d(a)
{
a=(a+"").split("");
alert(a[1].charCodeAt(0));
};
d("i˜g"); // Note that ˜ is 152 in ASCII
  • 测试.HTML 具有 x 用户定义的字符集:警报显示 63384。使用 %63232 有效,因为每个字符>128 显示为 63232+char。
  • 测试.HTML使用
  • UTF-8 字符集:警报显示 65533。所有字符> 128 都显示为 65533。
  • 测试.HTML使用 Windows-1252 字符集:警报显示 752。我找不到 ASCII 和显示的内容之间的关系。

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

function d(a)
{
a=(a+"").split("");
alert(a[1].charCodeAt(0));
};
d("i[x98]g"); // Note that x98 is 152
  • 测试.HTML 使用 x 用户定义的字符集:警报显示 65533。所有字符> 128 都显示为 65533。
  • 测试.HTML使用
  • UTF-8 字符集:警报显示 65533。所有字符> 128 都显示为 65533。
  • 测试.HTML使用 Windows-1252 字符集:警报显示 65533。所有字符> 128 都显示为 65533。

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

您的函数可以替换为 str.charCodeAt(1)

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

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