Web/API/TextDecoder

From Get docs

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.

Examples

Representing text with typed arrays

This example shows how to decode a Chinese/Japanese character [[File:../../../../../media.prod.mdn.mozit.cloud/attachments/2019/05/21/16663/88c288547fd98ac57a68fb5f568a7d4b/2019-05-21_191907.png]], as represented by five different typed arrays: Uint8Array, Int8Array, Uint16Array, Int16Array, and 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));

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.

let win1251decoder = new TextDecoder('windows-1251');
let bytes = new Uint8Array([207, 240, 232, 226, 229, 242, 44, 32, 236, 232, 240, 33]);
console.log(win1251decoder.decode(bytes)); // Привет, мир!

Constructor

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

Properties

The TextDecoder interface doesn't inherit any properties.

TextDecoder.prototype.encodingRead only
Is a DOMString containing the name of the decoder, that is a string describing the method the TextDecoder will use.
TextDecoder.prototype.fatalRead only
Is a Boolean indicating whether the error mode is fatal.
TextDecoder.prototype.ignoreBOMRead only
Is a Boolean indicating whether the byte order marker is ignored.

Methods

The TextDecoder interface doesn't inherit any method.

TextDecoder.prototype.decode()
Returns a DOMString containing the text decoded with the method of the specific TextDecoder object.

Specifications

Specification Status Comment
EncodingThe definition of 'TextDecoder' in that specification. Living Standard Initial definition.

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
TextDecoder Chrome

Full support 38

Edge

Full support ≤79

Firefox Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

IE

No support No

Opera

Full support 25

Safari

Full support 10.1

WebView Android

Full support 38

Chrome Android

Full support 38

Firefox Android Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

Opera Android

Full support Yes

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 3.0

TextDecoder() constructor Chrome

Full support 38

Edge

Full support ≤79

Firefox Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

IE

No support No

Opera

Full support 25

Safari

Full support 10.1

WebView Android

Full support 38

Chrome Android

Full support 38

Firefox Android Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

Opera Android

?

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 3.0

decode Chrome

Full support 38

Edge

Full support ≤79

Firefox Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

IE

No support No

Opera

Full support 25

Safari

Full support 10.1

WebView Android

Full support 38

Chrome Android

Full support 38

Firefox Android Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

Opera Android

Full support Yes

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 3.0

encoding Chrome

Full support 38

Edge

Full support ≤79

Firefox Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

IE

No support No

Opera

Full support 25

Safari

Full support 10.1

WebView Android

Full support 38

Chrome Android

Full support 38

Firefox Android Full support 19


Full support 19


Partial support 18

Notes'

Notes' Implemented a slightly different version of the spec.

Opera Android

Full support Yes

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 3.0

fatal Chrome

Full support Yes

Edge

Full support ≤79

Firefox

Full support Yes

IE

No support No

Opera

Full support Yes

Safari

Full support 10.1

WebView Android

Full support Yes

Chrome Android

Full support Yes

Firefox Android

Full support Yes

Opera Android

Full support Yes

Safari iOS

Full support 10.3

Samsung Internet Android

Full support Yes

ignoreBOM Chrome

Full support Yes

Edge

Full support ≤79

Firefox

Full support Yes

IE

No support No

Opera

Full support Yes

Safari

Full support 10.1

WebView Android

Full support Yes

Chrome Android

Full support Yes

Firefox Android

Full support Yes

Opera Android

Full support Yes

Safari iOS

Full support 10.3

Samsung Internet Android

Full support Yes

Available in workers Chrome

Full support 38

Edge

Full support ≤79

Firefox

Full support 20

IE

No support No

Opera

Full support 25

Safari

Full support 10.1

WebView Android

Full support 38

Chrome Android

Full support 38

Firefox Android

Full support 20

Opera Android

?

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 3.0

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.'
See implementation notes.


See also