(类似的问题已经在StackOverflow上提出过,但并不完全相同。最接近的可能是 "javascript how to convert unicode string to ascii",其中已经有了“这必须是一个重复”的备注。我读了一些类似的帖子,但它们没有回答我的具体问题。我在非常好的W3Schools网站上查找过,并且也进行了谷歌搜索,但也没有找到答案。所以这里任何提示都将不胜感激。)
我有一个字节数组传递给JavaScript代码。在JavaScript中,数据按字符串形式到达。由于这是从第三方应用程序传输的,我不知道传输机制,也不知道该字符串是“宽”还是“窄”。
在我的JavaScript代码中,我有一些类似
b = str.charCodeAt(pos);
的代码。我的问题是,如0x86 = 134这样的字节值以字符0x2020 = 8224的形式传递,原因似乎是我的原始字节被解释为拉丁-1(可能是)'dagger'字符,然后被翻译成等效的Unicode代码点。(问题可能或可能不是JavaScript的“错”。)其他值也存在类似的问题,尽管范围为0x00..0x7F和0xA0..0xFF的大多数值都没有问题,但大多数值从0x80..0x9F受影响,在每种情况下,该值似乎是原始拉丁-1的Unicode。
另一个观察结果是,如果长度以字节为单位测量,则字符串的长度符合窄字符串的预期长度。(另一方面,如果长度返回抽象字符值,则这对我来说没有意义。)
在JavaScript中,是否有一种方法可以获取字符串中的“原始”字节,直接获取Latin-1或ASCII字符代码,或者在字符编码之间进行转换或定义默认编码?
我可以编写自己的映射,但我宁愿不这样做。我希望这不是解决问题的唯一方法。
我还在研究调用应用程序中是否有任何可调整的内容(因为它可能会将数据作为宽字符串传递,尽管我怀疑)。
无论哪种方式,我都对是否存在简单的JavaScript解决方案感兴趣,或者理解为什么不存在这样的解决方案。
(如果输入数据是字符数据,那么自动处理Unicode将非常好。但它不是,它只是一个二进制数据流。)
谢谢。