TextDecoder

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

注意:此功能在 Web Workers 中可用。

TextDecoder 接口代表了特定文本编码的解码器,例如 UTF-8ISO-8859-2GBK。解码器接收字节数组作为输入,并返回一个 JavaScript 字符串。

构造函数

TextDecoder()

创建并返回一个新的 TextDecoder

实例属性

TextDecoder 接口不继承任何属性。

TextDecoder.encoding 只读

一个字符串,包含此 TextDecoder 将使用的字符编码系统的名称。

TextDecoder.fatal 只读

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

TextDecoder.ignoreBOM 只读

一个布尔值,指示是否忽略 字节顺序标记

实例方法

TextDecoder 接口不继承任何方法。.

TextDecoder.decode()

将给定的字节解码为 JavaScript 字符串并返回。

示例

解码 UTF-8 文本

此示例展示了如何解码字符“𠮷”的 UTF-8 编码。

html
<button id="decode">Decode</button>
<button id="reset">Reset</button>
<div id="output"></div>
js
const utf8decoder = new TextDecoder(); // default 'utf-8'
const encodedText = new Uint8Array([240, 160, 174, 183]);

const output = document.querySelector("#output");
const decodeButton = document.querySelector("#decode");
decodeButton.addEventListener("click", () => {
  output.textContent = utf8decoder.decode(encodedText);
});

const resetButton = document.querySelector("#reset");
resetButton.addEventListener("click", () => {
  window.location.reload();
});

解码非 UTF-8 文本

在此示例中,我们解码俄语文本“Привет, мир!”,其含义为“你好,世界。”。在我们的 TextDecoder() 构造函数中,我们指定了 Windows-1251 字符编码。

html
<button id="decode">Decode</button>
<button id="reset">Reset</button>
<div id="decoded"></div>
js
const win1251decoder = new TextDecoder("windows-1251");
const encodedText = new Uint8Array([
  207, 240, 232, 226, 229, 242, 44, 32, 236, 232, 240, 33,
]);

const decoded = document.querySelector("#decoded");
const decodeButton = document.querySelector("#decode");
decodeButton.addEventListener("click", () => {
  decoded.textContent = win1251decoder.decode(encodedText);
});

const resetButton = document.querySelector("#reset");
resetButton.addEventListener("click", () => {
  window.location.reload();
});

规范

规范
编码
# interface-textdecoder

浏览器兼容性

另见