W3cubDocs

/Web APIs

TextDecoder

The TextDecoder interface represents a decoder for a specific text encoding, such as UTF-8, ISO-8859-2, KOI8-R, GBK, etc. A decoder takes a stream of bytes as input and emits a stream of code points.

Note: This feature is available in Web Workers

Constructor

TextDecoder()

Returns a newly constructed TextDecoder that will generate a code point stream with the decoding method specified in parameters.

Instance properties

The TextDecoder interface doesn't inherit any properties.

TextDecoder.encoding Read only

A string containing the name of the decoder, which is a string describing the method the TextDecoder will use.

TextDecoder.fatal Read only

A Boolean indicating whether the error mode is fatal.

TextDecoder.ignoreBOM Read only

A Boolean indicating whether the byte order mark is ignored.

Instance methods

The TextDecoder interface doesn't inherit any methods.

TextDecoder.decode()

Returns a string containing the text decoded with the method of the specific TextDecoder object.

Examples

Representing text with typed arrays

This example shows how to decode a Chinese/Japanese character Chinese character meaning lucky, as represented by five different typed arrays: Uint8Array, Int8Array, Uint16Array, Int16Array, and Int32Array.

js

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));

Handling non-UTF8 text

In this example, we decode the Russian text "Привет, мир!", which means "Hello, world." In our TextDecoder() constructor, we specify the Windows-1251 character encoding, which is appropriate for Cyrillic script.

js

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)); // Привет, мир!

Specifications

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
TextDecoder 38 79 19
18Implemented a slightly different version of the spec.
No 25 10.1 38 38 19
18Implemented a slightly different version of the spec.
25 10.3 3.0
TextDecoder 38 79 19
18Implemented a slightly different version of the spec.
No 25 10.1 38 38 19
18Implemented a slightly different version of the spec.
25 10.3 3.0
decode 38 79 19
18Implemented a slightly different version of the spec.
No 25 10.1 38 38 19
18Implemented a slightly different version of the spec.
25 10.3 3.0
encoding 38 79 19
18Implemented a slightly different version of the spec.
No 25 10.1 38 38 19
18Implemented a slightly different version of the spec.
25 10.3 3.0
fatal 38 79 36 No 25 10.1 38 38 36 25 10.3 3.0
ignoreBOM 38 79 63 No 25 10.1 38 38 63 25 10.3 3.0
worker_support 38 79 20 No 25 10.1 38 38 20 25 10.3 3.0

See also

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder