浅识TextDecoder

TextDecoder : 参考文档  

TextDecoder(文本解码器)是 JavaScript 中的一个 API,用于将二进制数据解码为字符串。

1.创建对象

 要使用文本解码器,首先需要创建一个 TextDecoder 对象。这个对象可以接受一个可选的参数,用于指定字符编码。如果不指定编码,则默认使用UTF-8编码,常见的编码类型有UTF-8ISO-8859-2KOI8-RGBK 等。

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: 一个 ArrayBufferTypedArray 或包含要解码的编码文本的 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() 方法,每次传递数据流的一部分,而解码器会尝试基于当前可用的字节返回尽可能多的解码字符串


 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值