1. 概述
Encoding API 提供了一种机制来处理各种字符编码文本,包括传统的非 UTF-8 编码。
该API提供了四个接口:
TextDecoder
TextEncoder
TextDecoderStream
TextEncoderStream
2. 接口
2.1 TextDecoder
TextDecoder
接口表示一个文本解码器,一个解码器只支持一种特定文本编码,例如 UTF-8
、ISO-8859-2
、KOI8-R
、GBK
,等等。解码器将字节流作为输入,并提供码位流作为输出。
构造函数
TextDecoder()
返回一个新构造的 TextDecoder
,它使用参数中指定的解码方法生成码位流。
new TextDecoder()
new TextDecoder(utfLabel)
new TextDecoder(utfLabel, options)
参数:
-
utfLabel
可选 。一个字符串,默认是"utf-8"
。可以是任意有效的编码。 -
options
可选。 一个具有属性的对象:fatal
一个布尔值,表示在解码无效数据时,TextDecoder.decode()
方法是否必须抛出TypeError
。默认是false
,这意味着解码器将用替换字符替换错误的数据。
如下例子:
const textDecoder1 = new TextDecoder("iso-8859-2");
const textDecoder2 = new TextDecoder();
const textDecoder3 = new TextDecoder("csiso2022kr", {
fatal: true }); // Allows TypeError exception to be thrown.
const textDecoder4 = new TextDecoder("iso-2022-cn"); // Throw a RangeError exception.
属性
TextDecoder
接口不继承任何属性。
-
TextDecoder.prototype.encoding
只读一个包含的解码器名称的字符串,即描述
TextDecoder
将使用的方法的字符串。 -
TextDecoder.prototype.fatal
只读一个布尔值,表示错误模式是否致命。
-
TextDecoder.prototype.ignoreBOM
只读一个布尔值,表示是否忽略字节顺序标记(BOM) 标记。如果字节顺序标记被忽略,则是
true
;否则是false
。
方法
TextDecoder.decode()
TextDecoder.decode()
方法返回一个字符串,其包含作为参数传递的缓冲区解码后的文本。
解码方法在当前的 TextDecoder
对象中定义。这包含了数据的预期编码,以及如何处理解码时发生的错误。
decode()
decode(buffer)
decode(buffer, options)
参数:
-
buffer
可选。一个ArrayBuffer
、TypedArray
或包含要解码的编码文本的DataView
对象。 -
options
可选。具有以下属性的对象:stream
一个布尔标志,表示在后续调用dec