What if the binary data is actually a string? For instance, we received a file with textual data.
The build-in TextDecoder object allows to read the value into an actual JavaScript string, given the buffer and the encoding.
We first need to create it:
let decoder = new TextDecoder([label], [options]);
label– the encoding,utf-8by default, butbig5,windows-1251and many other are also supported.options– optional object:fatal– boolean, iftruethen throw an exception for invalid (non-decodable) characters, otherwise (default) replace them with character\uFFFD.ignoreBOM– boolean, iftruethen ignore BOM (an optional byte-order Unicode mark), rarely needed.
…And then decode:
let str = decoder.decode([input], [options]);
input–BufferSourceto decode.options– optional object:stream– true for decoding streams, whendecoderis called repeatedly with incoming chunks of data. In that case a multi-byte character may occasionally split between chunks. This options tellsTextDecoderto memorize “unfinished” characters and decode them when the next chunk comes.
For instance:
let uint8Array = new Uint8Array([72, 101, 108, 108, 111]);
alert( new TextDecoder().decode(uint8Array) ); // Hello
let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]);
alert( new TextDecoder().decode(uint8Array) ); // 你好