在 JavaScript 中,如果得到了一串字节(比如 Uint8Array
),要转化成对应的字符串,就可以用到 TextDecoder
。简单的使用方法如下:
const decoder = new TextDecoder('utf-8');
const bytes = new Uint8Array([
104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100
]);
const result = decoder.decode(bytes);
console.log(result); // => "hello world"
当然,上面的这个例子是比较简单的。不使用 TextDecoder
也可以直接转化成字符串:
const bytes = new Uint8Array([
104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100
]);
const result = String.fromCharCode(...bytes);
console.log(result); // => "hello world"
TextDecoder
的主要优势,需要在非 ASCII 码范围内才体现出来。特别是 utf-8 这类变长字符串编码,直接处理比较困难。交给现成的 API 来处理,简单方便。
参考文档:MDN