【发布时间】:2016-03-02 14:42:17
【问题描述】:
我正在用 JavaScript 编写一个程序,需要将文本转换为 8 位二进制文件,我通过使用“exampleVariable.charCodeAt(i).toString(2)”的循环来完成,然后附加“0”到前面,直到每个字符的二进制表示的长度为 8 位。但是,当将俄语字符传递给函数时,每个字符都将转换为 11 位二进制表示,而实际上它应该是 16 位。例如,“ä”转换为 10000110100,而实际上应该转换为“1101000010110100”。有想法该怎么解决这个吗?
【问题讨论】:
-
JavaScript 字符串使用 UTF-16 - 每个字符都是 16 位,而不是 8 位。
-
当我将“a”转换为二进制时,结果是“01100001”。我猜这就是我所说的 8 位。
-
那么你想得到什么字符编码? UTF-8?
-
是的,除了俄语字符用 16 位表示......我想。 (如果你没有注意到,我对此了解不多)。
-
俄语字符适合 UTF-16 16 位空间,但对于 UTF-8,它们需要一个前缀字节(正如您在问题中所写)。您必须通过following the rules for UTF-8 character encoding. 自己执行该转换
标签: javascript binary