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

use*_*925 5 javascript node.js

我正在开发一个需要与C++ tcp/udp套接字通信的javascript/nodejs应用程序.好像我从旧的C++客户端获得了一个utf16缓冲区.我现在没有找到解决方案将其转换为可读字符串,另一个方向似乎是同样的问题.

这两个方向有一个简单的方法吗?

美好祝愿

rob*_*lep 7

如果你有一个UTF-16编码的缓冲区,你可以将它转换为UTF-8字符串,如下所示:

let string = buffer.toString('utf16le');
Run Code Online (Sandbox Code Playgroud)

要从流中读取这些内容,最简单的方法是在最后使用convert to string:

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

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

let buffer = Buffer.from(string, 'utf16le')
Run Code Online (Sandbox Code Playgroud)

  • `.toString('utf16le');` 在通过 GSM SMS 消息发送重音字母时特别有用 (2认同)