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; }