编程语言
首页 > 编程语言> > 如何从JavaScript中的字符串中获取ASCII代码?

如何从JavaScript中的字符串中获取ASCII代码?

作者:互联网

(在StackOverflow上已经提到了类似的问题,但不是这个.最近的可能是“javascript how to convert unicode string to ascii”,其中已经有了“这必须是一个复制品”.我已经阅读了一些类似的帖子,但是他们没有回答我的具体问题.我看过非常好的W3Schools网站,并且也用Google搜索过,但也没有找到答案.所以任何提示都会非常感激.)

我有一个字节数组传递给一段JavaScript.在JavaScript中,数据以字符串形式到达.我不知道传输机制,因为它来自第三方应用程序.我甚至不知道字符串是“宽”还是“窄”.

在我的JavaScript中,我有一些代码,如b = str.charCodeAt(pos);.

我的问题是像字符0x2020 = 8224这样的字节值如0x86 = 134.这似乎是因为我的原始字节被解释为Latin-1(可能)’匕首’字符,然后被转换为等效的Unicode代码点. (问题可能是也可能不是JavaScript的’错误’.)其他值也会出现类似的问题,尽管范围0x00..0x7F和0xA0..0xFF看起来很好,但大多数值来自0x80..0x9F受到影响,每种情况下,该值似乎是原始Latin-1的Unicode.

另一个观察结果是,如果以字节为单位测量长度,则字符串的长度是我对窄字符串的期望. (另一方面,如果length返回抽象字符中的值,这不会告诉我任何事情.)

那么,在JavaScript中,有没有办法获取字符串中的“原始”字节,或者直接获取Latin-1或ASCII字符代码,或者在字符编码之间进行转换,或者定义默认编码?

我可以编写自己的映射,但我不想.我希望这就是我最终会做的事情,但这种感觉会让人觉得自己已经陷入困境了.

我也在研究是否可以在调用应用程序中调整任何内容(因为它可能将数据作为一个宽字符串传递,尽管我对此表示怀疑).

无论哪种方式,我都会对是否有简单的JavaScript解决方案感兴趣,或者了解为什么没有.

(如果传入的数据是字符数据,那么自动处理Unicode将是很好的.但事实并非如此,它只是一个二进制数据流.)

谢谢.

解决方法:

字符串中没有原始字节. EcmaScript规范将字符串定义为UTF-16代码单元序列.这是任何口译员遇到的最细粒度的表示.

在浏览器上没有编码库.如果您尝试将字节数组表示为字符串并想要重新编码,则必须自行滚动.

如果您的字符串已经恰好是有效的ASCII,那么您可以使用charCodeAt方法获取代码单元的数值.

"\n".charCodeAt(0) === 10

标签:javascript,unicode,character,ascii,latin1
来源: https://codeday.me/bug/20190723/1517041.html