文本解码器
TextDecoder - Web API 接口参考 | MDN https://developer.mozilla.org/zh-CN/docs/web/api/textdecoder
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)); // Привет, мир!