[英]node encode and decode utf-16 buffer
我正在開發一個需要與C ++ tcp / udp套接字通信的javascript / nodejs應用程序。 好像我從舊的C ++客戶端獲得了一個utf16緩沖區。 我現在沒有找到解決方案將其轉換為可讀字符串,另一個方向似乎是同樣的問題。
這兩個方向有一個簡單的方法嗎?
美好祝願
如果你有一個UTF-16編碼的緩沖區,你可以將它轉換為UTF-8字符串,如下所示:
let string = buffer.toString('utf16le');
要從流中讀取這些內容,最簡單的方法是在最后使用convert to string:
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')
單緩沖區
如果您有一個Buffer,則可以使用其toString方法,該方法將使用特定編碼將全部或部分二進制內容轉換為字符串。 如果您不提供參數,則默認為utf8,但我在此示例中明確設置了編碼。
var req = http.request(reqOptions,function(res){...
res.on('data', function(chunk) {
var textChunk = chunk.toString('utf8');
// process utf8 text chunk
});
});
流式緩沖器
如果您有像上面問題中的流式緩沖區,其中多字節UTF8字符的第一個字節可能包含在第一個緩沖區(塊)中,第二個字節可能包含在第二個緩沖區中,那么您應該使用StringDecoder。 :
var StringDecoder = require('string_decoder')。StringDecoder;
var req = http.request(reqOptions,function(res){... var decoder = new StringDecoder('utf8');
res.on('data', function(chunk) {
var textChunk = decoder.write(chunk);
// process utf8 text chunk
});
}); 如果您有一個Buffer,則可以使用其toString方法,該方法將使用特定編碼將全部或部分二進制內容轉換為字符串。 如果您不提供參數,則默認為utf8,但我在此示例中明確設置了編碼。
var req = http.request(reqOptions,function(res){...
res.on('data', function(chunk) {
var textChunk = chunk.toString('utf8');
// process utf8 text chunk
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.