此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
TextDecoder
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年1月.
TextDecoder 接口表示一个文本解码器,一个解码器只支持一种特定文本编码,例如 UTF-8、ISO-8859-2、KOI8-R、GBK,等等。解码器将字节流作为输入,并提供码位流作为输出。
备注: 此特性在 Web Worker 中可用。
构造函数
TextDecoder()-
返回一个新构造的
TextDecoder,它使用参数中指定的解码方法生成码位流。
属性
TextDecoder 接口不继承任何属性。
TextDecoder.prototype.encoding只读-
一个包含的解码器名称的字符串,即描述
TextDecoder将使用的方法的字符串。 TextDecoder.prototype.fatal只读-
一个布尔值,表示错误模式是否致命。
TextDecoder.prototype.ignoreBOM只读-
一个布尔值,表示是否忽略字节顺序标记(BOM)标记。
方法
TextDecoder 接口不继承任何方法。
TextDecoder.prototype.decode()-
返回一个字符串,其中包含使用特定
TextDecoder对象的方法解码的文本。
示例
>用类型化数组表示文本
本示例展示如何解码中文/日语字符,用五个不同的类型化数组表示:Uint8Array、Int8Array、Uint16Array、Int16Array 和 Int32Array。
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 字符编码。
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> |
浏览器兼容性
Enable JavaScript to view this browser compatibility table.
参见
TextEncoder接口描述了逆操作。- 一个垫片,允许在不支持它的浏览器使用这个接口。
- Node.js 从 v11.0.0 开始支持全局导出