节点编码和解码UTF-16缓冲区

11

我正在开发一个需要与C++ tcp/udp套接字通信的JavaScript/Node.js应用程序。似乎我从旧的C++客户端获得了UTF16缓冲区。目前我还没有找到将其转换为可读字符串的解决方案,而另一方向似乎也存在同样的问题。

这两个方向有没有简单的方法?

祝好!

1个回答

15
如果您有一个UTF-16编码的缓冲区,您可以像这样将其转换为UTF-8 Javascript字符串:
let string = buffer.toString('utf16le');

要从流中读取这些数据,最简单的方法是在最后将其转换为字符串:

let chunks = [];
stream.on('data', chunk => chunks.push(chunk))
      .on('end',  ()    => {
        let buffer = Buffer.concat(chunks);
        let string = buffer.toString('utf16le');
        ...
      });

将JS字符串转换为UTF-16:

let buffer = Buffer.from(string, 'utf16le')

2
.toString('utf16le'); 在通过GSM短信发送带有重音字母时非常有用。 - Azevedo
1
JavaScript字符串不是UTF-8编码。 - Константин Ван
@КонстантинВан,你是对的,请看我的编辑。 - robertklep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接