Преобразование 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 Упаковка и распаковка двоичных данных.

Другие вопросы по тегам