此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

TextDecoder

基线
广泛可用

自 2020年1月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

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

TextDecoder 接口表示一个文本解码器,它只支持一种特定文本编码,例如 UTF-8、ISO-8859-2、GBK,等等。解码器接受字节数组输入,输出 JavaScript 字符串。

构造函数

TextDecoder()

创建并返回一个新的 TextDecoder。

实例属性

TextDecoder 接口不继承任何属性。

TextDecoder.encoding 只读

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

TextDecoder.fatal 只读

一个布尔值,表示错误模式是否为严重错误。

TextDecoder.ignoreBOM 只读

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

实例方法

TextDecoder 接口不继承任何方法。

TextDecoder.decode()

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

示例

解码 UTF-8 文本

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

html
<button id="decode">解码</button>
<button id="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">解码</button>
<button id="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();
});

规范

规范
Encoding
# interface-textdecoder

浏览器兼容性

参见