【问题标题】:Characters with ASCII > 128 are not correctly read in JavascriptASCII > 128 的字符在 Javascript 中无法正确读取
【发布时间】:2012-04-21 16:22:51
【问题描述】:

我有一个包含 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:警报显示 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。

【问题讨论】:

  • utf8 的 127-255 范围内没有字符,ASCII 以 127 结尾...而且"i[x98]g" 中位置1 的字符是"["
  • "~" 在我知道的任何编码中都不在位置 152。
  • 请参阅 www.ascii-code.com(ASCII 扩展)

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


【解决方案1】:

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

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

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

【讨论】:

  • 附加信息:charCodeAt() 适用于 Unicode,并不真正关心 ASCII。
  • 对不起,我的意思是 ASCII 扩展。如下所示,152 是 '~' ascii-code.com [x98] 是一个字符。这是 Notepad++ 在 UTF-8 中表示 152 个字符的方式。十六进制的 98 是 152。
  • 谢谢大家。然后我重新提出我的问题。我想在 TEST.JS 中写一个代表整数 152 的字符作为 d() 的参数,这样当我运行这个函数时,警报会显示 152。我可以使用任何编码。
  • @Arturo 在这种情况下你可以写成"\u0098",或者这个隐形字符:"",或者String.fromCharCode(152)
  • @Arturo,这是一个全新的问题,应该单独提出。我也无法理解这个问题,因为没有代表整数 152 的字符。如果您希望根据自己的方案将字符映射到整数,或者应用其他人的映射,请使用 table。但很难猜出这里真正的问题是什么。
【解决方案2】:

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

【讨论】:

  • 对不起,我的意思是 ASCII 扩展。如下所示,152 是 '~' ascii-code.com
猜你喜欢
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
相关资源
最近更新 更多