gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 01:17:47 27 4
gpt4 key购买 nike

Bytes to string and backward

在那里编写的函数可以正常工作,即 pack(unpack("string")) 产生 "string"。但我希望得到与 "string".getBytes("UTF8") 在 Java 中给出的结果相同的结果。

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

对于上述文章中的拉丁字符串 unpack(str) 提供与 getBytes("UTF8") 相同的结果,只是它添加了 0 对于奇怪的位置。但是对于非拉丁字符串,它在我看来完全不同。有没有办法像 Java 那样在 JavaScript 中处理字符串数据?

最佳答案

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

unescape(encodeURIComponent(str))

(这是有效的,因为 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;
}

关于Java String.getBytes ("UTF8") JavaScript 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12518830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com