let decoder = new TextDecoder([label], [options]);
- label——编码格式,默认是 utf-8。
- options——选项对象
- fatal——一个布尔值。为 true 时,遇到无效、不可破解的字符时会抛错,否则(默认)将其替换成字符 \uFFFD。
- ignoreBOM——布尔值。为 true 时,表示忽略 BOM(一个可选的字节顺序 unicode 标记),很少使用。
解码:
let str = decoder.decode([input], [options]);
- input——要解码的 BufferSource。
- options——选项对象
- stream
例子:
let uint8Array = new Uint8Array([72, 101, 108, 108, 111]);
alert( new TextDecoder().decode(uint8Array) ); // Hello
let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]);
alert( new TextDecoder().decode(uint8Array) ); // 你好
我们可以解码 buffer 的一部分,为它创建一个子数组视图:
let uint8Array = new Uint8Array([0, 72, 101, 108, 108, 111, 0]);
// 字符串隐藏在这些字节中间
// 基于 uint8Array 的底层 buffer 创建一个新的 view 对象,没有复制操作
let binaryString = uint8Array.subarray(1, -1);
alert( new TextDecoder().decode(binaryString) ); // Hello
TextEncoder
TextEncoder 将字符串转为字节码。
语法:
let encoder = new TextEncoder();
仅支持“utf-8”编码格式。
包含两个方法:
- encode(srr)
- encodeInto(str, destination)
let encoder = new TextEncoder();
let uint8Array = encoder.encode("Hello");
alert(uint8Array); // 72,101,108,108,111