TextDecoder : 参考文档
TextDecoder(文本解码器)是 JavaScript 中的一个 API,用于将二进制数据解码为字符串。
1.创建对象
要使用文本解码器,首先需要创建一个 TextDecoder 对象。这个对象可以接受一个可选的参数,用于指定字符编码。如果不指定编码,则默认使用UTF-8编码,常见的编码类型有UTF-8
、ISO-8859-2
、KOI8-R
、GBK
等。
const utf8Decoder = new TextDecoder('utf-8');
2.decode()方法解码字节数组
const decoder = new Uint8Array([0x74, 0x65, 0x73, 0x74]); // "test" 的 UTF-8 编码
const string = utf8Decoder.decode(bytes);
console.log(string); // 输出 "test"
decode()
方法返回一个字符串,其包含作为参数传递的缓冲区解码后的文本,语法如下:
decode()
decode(buffer)
decode(buffer, options)
buffer: 一个 ArrayBuffer、TypedArray 或包含要解码的编码文本的 DataView 对象。
options 具有stream属性,一个布尔标志,表示在后续调用 decode()
将跟随附加数据。如果以分块的形式处理数据,则设置为 true
;如果是最终的分块或者数据没有分块,则设置为 false
。默认是 false
。
3、处理解码错误
如果要处理解码异常情况,则需要用到TextDecoder的fatal属性,fatal是一个布尔值,表示错误模式是否是致命的,默认为false。当值为false时解码器将使用替换字符 U+FFFD(REPLACEMENT CHARACTER)替换无效的数据;如果这个值是 true
,那么当解码器在解码时遇到格式错误的数据时,将抛出 TypeError 错误
const decoder = new TextDecoder('utf-8', { fatal: true });
const bytes = new Uint8Array([0x80, 0x81]); // 无效的 UTF-8 编码
try {
const string = decoder.decode(bytes);
} catch (e) {
console.error('解码失败:', e);
}
4.其它属性:
encoding
只读属性 encoding
返回一个字符串,其中包含了指定的解码器的解码算法的名称。
ignoreBOM
只读属性 ignoreBOM
是一个布尔值,表示是否忽略字节顺序标记。
5.decode方法中的
stream配置处理流式数据解码
在 TextDecoder 的decode方法中,可以配置{stream:true}来处理流式数据。
decode(buffer, options)
在解析流式数据时,当你传递 { stream: true } 选项时TextDecoder 会以流式模式工作。这意味着你可以多次调用 decode() 方法,每次传递数据流的一部分,而解码器会尝试基于当前可用的字节返回尽可能多的解码字符串