使用TextEncoder和TextDecoder

发布时间 2023-06-28 14:23:58作者: litiyi

TextEncoder

编码:字符串 -> UTF-8字节流

const encoder = new TextEncoder()
const view = encoder.encode('€')
console.log(view); // Uint8Array(3) [226, 130, 172]

TextDecoder

解码: UTF-8字节流  -> 字符串

let utf8decoder = new TextDecoder(); // default 'utf-8' or 'utf8'

let u8arr = new Uint8Array([240, 160, 174, 183]);
let i8arr = new Int8Array([-16, -96, -82, -73]);
let u16arr = new Uint16Array([41200, 47022]);
let i16arr = new Int16Array([-24336, -18514]);
let i32arr = new Int32Array([-1213292304]);

console.log(utf8decoder.decode(u8arr));
console.log(utf8decoder.decode(i8arr));
console.log(utf8decoder.decode(u16arr));
console.log(utf8decoder.decode(i16arr));
console.log(utf8decoder.decode(i32arr));

 

例子:Utf-16 -> Utf-8

function Utf16ToUtf8(utf16String) {
  if (!utf16String) {
    return;
  }
  const encoder = new TextEncoder();
  const utf8Array = encoder.encode(utf16String); // 将UTF-16字符串编码为包含UTF-8表示的Uint8Array
  const decoder = new TextDecoder("utf-8"); // 创建一个具有“utf-8”编码的TextDecoder对象
  const utf8String = decoder.decode(utf8Array); // 将Uint8Array解码回utf-8字符串
  return utf8String;
}