Java String.getBytes("UTF8")JavaScript模拟

ivk*_*mer 4 javascript java string byte utf-8

字符串到字符串和向后

写有功能正常工作而pack(unpack("string"))收益率"string".但是我希望"string".getBytes("UTF8")得到与Java 相同的结果.

问题是如何使函数在JavaScript中提供与Java getBytes("UTF8")相同的功能?

对于unpack(str)上面提到的文章中的拉丁字符串提供了相同的结果,getBytes("UTF8")除了它0为奇数位置添加.但是对于非拉丁字符串,它在我看来完全不同.有没有办法像Java一样使用JavaScript中的字符串数据?

bob*_*nce 7

您不需要编写全功能的UTF-8编码器; 有一个更简单的JS习惯用法将Unicode字符串转换为表示UTF-8代码单元的字节串:

unescape(encodeURIComponent(str))
Run Code Online (Sandbox Code Playgroud)

(这是因为escape/ unescape使用的奇数编码使用%xx十六进制序列来表示带有该代码的ISO-8859-1字符,而不是URI组件转义所使用的UTF-8.类似decodeURIComponent(escape(bytes))地在另一个方向上.)

所以如果你想要一个数组,它将是:

function toUTF8Array(str) {
    var utf8= unescape(encodeURIComponent(str));
    var arr= new Array(utf8.length);
    for (var i= 0; i<utf8.length; i++)
        arr[i]= utf8.charCodeAt(i);
    return arr;
}
Run Code Online (Sandbox Code Playgroud)