首页 > 解决方案 > 在 Javascript 中转换 16 位 Unicode 十六进制字符串

问题描述

我的 websocket 应用程序从仅使用 16 位 Unicode (wchar_t) 字符串的其他来源获取字符串输入。在发送之前,字符串被编码为十六进制,此处显示了单词“HELLO”的示例:

680065006C006C006F00

如何将该十六进制字符串转换为有效的 Javascript 字符串?我找到的最接近的是这里的 Node.js 示例(UTF-16 Hex Decode NodeJS),但我没有使用 Node.js,所以这不起作用。

如果所有字符串都是英文的,那么只需跳过每个 '00' 十六进制数字就很容易了,但我需要支持所有语言,我不确定如何从两个字节构造一个字符。

标签: javascriptunicode

解决方案


谢谢@samthecodingman。 fromCodePoint是我一直在寻找的。还需要交换字节顺序,但这似乎可行。

for (var i = 0; i < strLen; i+=4) {
    c = parseInt(str.substr(i+2,2) + str.substr(i,2), 16)
    s = s + String.fromCodePoint(c);
}

推荐阅读