Javascript编码打破和组合多字节字符?

use*_*397 0 javascript unicode character-encoding

我打算为我的网络应用程序使用客户端AES加密.

现在,我一直在寻找方法将多字节字符分成一个字节 - '非字符',加密(具有相同的加密文本长度),

将它们解密,将这些单字节"非字符"转换回多字节字符.

我已经看过wiki for UTF-8(JS的默认编码?)和UTF-16,但我无法弄清楚如何检测"碎片"多字节字符以及如何将它们组合起来.

谢谢 : )

T.J*_*der 7

JavaScript字符串是以16位"字符"存储的UTF-16.对于需要16位以上的Unicode字符("代码点")(某些代码点在UTF-16中需要32位),每个JavaScript"字符"实际上只是代码点的一半.

因此,要将JavaScript字符"分解"为字节,只需获取字符代码并拆分高字节和低字节:

var code = str.charCodeAt(0); // The first character, obviously you'll have a loop
var lowbyte = code & 0xFF;
var highbyte = (code & 0xFF00) >> 8;
Run Code Online (Sandbox Code Playgroud)

(尽管JavaScript的数字是浮点数,但按位运算符的工作方式是32位整数,当然在我们的情况下,这些位中只有16位是相关的.)

你永远不会有奇数个字节,因为这也是UTF-16.