即时通讯工作在需要与C++ tcp/udp套接字交谈的javascript/nodejs应用程序。看来我从旧的C++客户端获得了一个utf16缓冲区。我现在没有找到解决方案将其转换为可读的字符串,而另一个方向似乎是同一个问题。节点编码和解码utf-16缓冲区
这两个方向是否有简单的方法?
尼斯问候
即时通讯工作在需要与C++ tcp/udp套接字交谈的javascript/nodejs应用程序。看来我从旧的C++客户端获得了一个utf16缓冲区。我现在没有找到解决方案将其转换为可读的字符串,而另一个方向似乎是同一个问题。节点编码和解码utf-16缓冲区
这两个方向是否有简单的方法?
尼斯问候
单个缓冲区
如果你有一个缓冲区,你可以使用它的toString方法将使用特定编码的二进制内容全部或部分转换为字符串。如果你没有提供参数,它默认为utf8,但在这个例子中我明确地设置了编码。
变种REQ = http.request(reqOptions,函数(RES){ ...
res.on('data', function(chunk) {
var textChunk = chunk.toString('utf8');
// process utf8 text chunk
});
});
流传输缓冲器
如果已在上述其中一个多字节UTF8字符的第一个字节可以包含在所述第一缓冲器(块)的问题流缓冲器等,并且在第二个字节第二个缓冲区,那么你应该使用一个StringDecoder。 :
var StringDecoder = require('string_decoder')。StringDecoder;
变种REQ = http.request(reqOptions,函数(RES){ ... 变种解码器=新StringDecoder( 'UTF8');
res.on('data', function(chunk) {
var textChunk = decoder.write(chunk);
// process utf8 text chunk
});
}); 如果你有一个缓冲区,你可以使用它的toString方法,它将使用特定的编码将全部或部分二进制内容转换为字符串。如果你没有提供参数,它默认为utf8,但在这个例子中我明确地设置了编码。
变种REQ = http.request(reqOptions,函数(RES){ ...
res.on('data', function(chunk) {
var textChunk = chunk.toString('utf8');
// process utf8 text chunk
});
});
如果你有一个UTF-16编码的缓冲区,你可以将其转换为UTF-8字符串是这样的:
let string = buffer.toString('utf16le');
从流中读取这些,这是最容易使用转换为字符串在尽头:
要一个JS字符串转换为UTF-16:
let buffer = Buffer.from(string, 'utf16le')