TextDecoder

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

TextDecoder 接口表示一个文本解码器,一个解码器只支持一种特定文本编码,例如 UTF-8ISO-8859-2KOI8-RGBK,等等。解码器将字节流作为输入,并提供码位流作为输出。

备注: 此特性在 Web Worker 中可用。

构造函数

TextDecoder()

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

属性

TextDecoder 接口不继承任何属性。

TextDecoder.prototype.encoding只读

一个包含的解码器名称的字符串,即描述 TextDecoder 将使用的方法的字符串。

TextDecoder.prototype.fatal只读

一个布尔值,表示错误模式是否致命。

TextDecoder.prototype.ignoreBOM 只读

一个布尔值,表示是否忽略字节顺序标记(BOM)标记。

方法

TextDecoder 接口不继承任何方法

TextDecoder.prototype.decode()

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

示例

用类型化数组表示文本

本示例展示如何解码中文/日语字符,用五个不同的类型化数组表示:Uint8ArrayInt8ArrayUint16ArrayInt16ArrayInt32Array

js
let utf8decoder = new TextDecoder(); // default 'utf-8' or '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 文本

在此示例中,我们对俄语文本“Привет,мир!”进行编码,它的意思是("Hello, world.")。在我们的 TextDecoder() 构造函数中,我们指定适用于西里尔字母的 Windows-1251 字符编码。

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

规范

Specification
Encoding
# interface-textdecoder

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
TextDecoder
TextDecoder() constructor
decode
encoding
fatal
ignoreBOM
Available in workers

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
See implementation notes.
Has more compatibility info.

参见