Преобразование UTF-8 UInt8Array в строку utf-8
У меня проблема. Мне нужен Javascript для связи с узлом C.
Протокол использует строку с заголовком 0xAAAA.
в JS у меня есть Uint8Array с {\xAA,\xAA} Моя проблема заключается в том, что мне нужно конвертировать Uint8Array в строку UTF-8 .
Как преобразовать из Uint8Array в UTF-8 в строку uTF-8)
2 ответа
используйте TextDecoder. как этот:
const decoder = new TextDecoder("utf-8");
const str = decoder.decode(Buffer.from([0xAA, 0xAA]));
Попробуй:
function str2arr(str) {
var utf8 = unescape(encodeURIComponent(str));
return new Uint8Array(utf8.split('').map(function (item) {
return item.charCodeAt();
}));
}
function arr2str(arr) {
// or [].slice.apply(arr)
var utf8 = Array.from(arr).map(function (item) {
return String.fromCharCode(item);
}).join('');
return decodeURIComponent(escape(utf8));
}
var arr = str2arr('汉字');
document.querySelector('div').innerHTML = arr;
document.querySelector('div:nth-of-type(2)').innerHTML = arr2str(arr);
<div></div>
<div></div>
[0xAA, 0xAA] - недопустимый массив utf8.
Для справки: https://github.com/zswang/jpacks Упаковка и распаковка двоичных данных.