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
TextDecoderthat 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
DOMStringcontaining the name of the decoder, that is a string describing the method theTextDecoderwill use. TextDecoder.prototype.fatalRead only- Is a
Booleanindicating whether the error mode is fatal. TextDecoder.prototype.ignoreBOMRead only- Is a
Booleanindicating whether the byte order marker is ignored.
Methods
The TextDecoder interface doesn't inherit any method.
TextDecoder.prototype.decode()- Returns a
DOMStringcontaining the text decoded with the method of the specificTextDecoderobject.
Specifications
| Specification | Status | Comment |
|---|---|---|
| EncodingThe definition of 'TextDecoder' in that specification. | Living Standard | Initial definition. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
TextDecoder
|
Chrome
Full support 38 |
Edge
Full support ≤79 |
Firefox Full support 19 Full support 19 Partial support 18 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' 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' 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' 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' 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' 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' 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' 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
- The
TextEncoderinterface describing the inverse operation. StringView– a C-like representation of strings based on typed arrays- A shim allowing to use this interface in browsers that don't support it.
Components.utils.importGlobalProperties- Node.js supports global export from v11.0.0
TextDecoder by Mozilla Contributors is licensed under CC-BY-SA 2.5.