TextDecoder - 表示用于特定文本编码的解码器

TextDecoder 接口表示用于特定文本编码的解码器,例如 UTF-8ISO-8859-2KOI8-RGBK 等。解码器采用字节流作为输入,并发出代码点流。

实例

用类型数组表示文本

此实例显示如何解码中文 / 日语字符,由五个不同类型的数组表示:Uint8ArrayInt8ArrayUint16ArrayInt16ArrayInt32Array

let utf8decoder = new TextDecoder(); // 默认为 'utf-8' 或 '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));

处理非 UTF8 文本

在此实例中,我们将俄语文本 “Привет,мир!”(表示 “你好世界”)解码,。在我们的 TextDecoder() 构造函数中,我们指定 Windows-1251 字符编码,适用于西里尔文字。

let win1251decoder = new TextDecoder('windows-1251');
let bytes = new Uint8Array([207, 240, 232, 226, 229, 242, 44, 32, 236, 232, 240, 33]);
console.log(win1251decoder.decode(bytes)); // Привет, мир!

构造函数

TextDecoder()

返回一个新构造的 TextDecoder,它将使用参数中指定的解码方法生成一个代码点流。

属性

TextDecoder 接口不继承任何属性。

TextDecoder.prototype.encoding 只读

一个 DOMString,包含解码器的名称,它描述了 TextDecoder 将使用的方法。

TextDecoder.prototype.fatal 只读

一个 Boolean,指示错误模式是否致命。

TextDecoder.prototype.ignoreBOM 只读

一个 Boolean,指示是否忽略字节顺序标记。

方法

TextDecoder 接口不继承任何方法。

TextDecoder.prototype.decode()

返回一个 DOMString,其中包含使用特定 TextDecoder 对象的方法解码的文本。

规范

规范 状态 备注
Encoding
TextDecoder 的定义
现行的标准 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持38≤79

19

181

不支持2510.1
TextDecoder() 构造函数38≤79

19

181

不支持2510.1
decode38≤79

19

181

不支持2510.1
encoding38≤79

19

181

不支持2510.1
fatal 支持≤79 支持 不支持 支持10.1
ignoreBOM 支持≤79 支持 不支持 支持10.1
在 Worker 中可用38≤7920 不支持2510.1

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持3838 未知

19

181

未知 支持10.3
TextDecoder() 构造函数3838 未知

19

181

未知 未知10.3
decode3838 未知

19

181

未知 支持10.3
encoding3838 未知

19

181

未知 支持10.3
fatal 支持 支持 未知 支持 未知 支持10.3
ignoreBOM 支持 支持 未知 支持 未知 支持10.3
在 Worker 中可用3838 未知20 未知 未知10.3

1. 实现与规范版本稍有不同。

2. 从 util 模块导出,但不是全局可用。

相关链接