Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript编码中断&;组合多字节字符?_Javascript_Unicode_Character Encoding - Fatal编程技术网

Javascript编码中断&;组合多字节字符?

Javascript编码中断&;组合多字节字符?,javascript,unicode,character-encoding,Javascript,Unicode,Character Encoding,我计划对我的web应用程序使用客户端AES加密 现在,我一直在寻找将多字节字符分解为一个字节的方法-“非字符”,加密(具有相同的加密文本长度) 将它们解密,将那些单字节的“非字符”转换回多字节字符 我看过UTF-8(JS的默认编码?)和UTF-16的wiki,但我不知道如何检测“碎片化”多字节字符,以及如何将它们组合回去 谢谢:)是以16位“字符”存储的UTF-16。对于需要超过16位的Unicode字符(“代码点”)(有些代码点在UTF-16中需要32位),每个JavaScript“字符”实际

我计划对我的web应用程序使用客户端AES加密

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

将它们解密,将那些单字节的“非字符”转换回多字节字符

我看过UTF-8(JS的默认编码?)和UTF-16的wiki,但我不知道如何检测“碎片化”多字节字符,以及如何将它们组合回去

谢谢:)

是以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;
(尽管JavaScript的数字是浮点数,但按位运算符以32位整数的形式工作,当然在我们的例子中,这些位中只有16位是相关的。)

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

是以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;
(尽管JavaScript的数字是浮点数,但按位运算符以32位整数的形式工作,当然在我们的例子中,这些位中只有16位是相关的。)


您将永远不会有奇数个字节,因为这也是UTF-16。

您可以简单地转换为UTF8。。。例如,通过使用

考虑到您正在使用,您可以使用它的方法转换为utf8并返回字符串。见:


var words=CryptoJS.enc.Utf8.parse(“您可以简单地转换为Utf8…例如,使用

考虑到您正在使用,您可以使用其方法转换为utf8并返回字符串。请参阅:


var words=CryptoJS.enc.Utf8.parse(‘我计划在我的web应用程序中使用客户端AES加密。--为什么?HTTPS不适用吗?你确定你的AES库没有将字符串转换为UTF8或从UTF8转换为字符串的方法吗?你使用的是哪个库?@FritsvanCampen我在这里做一些实验-不是生产,而是演示page@xanatos我在用cryptoJS,但无法确定它使用的是什么编码&等等。@xanatos updates response,添加了jsfiddle示例我计划在我的web应用程序中使用客户端AES加密。--为什么?HTTPS不适用?你确定你的AES库没有一些方法将字符串转换为UTF8或从UTF8转换为UTF8吗?你正在使用哪个库?@FritsvanCampen I'我在这里做一些实验——不是制作,而是演示page@xanatos我正在使用cryptoJS,但无法确定它使用的是什么编码&etc.@xanatos updates response,添加了jsfiddle example你是最好的,TJ^。^你是最好的,TJ^^