{ "type": "module", "source": "doc/api/string_decoder.md", "modules": [ { "textRaw": "String Decoder", "name": "string_decoder", "introduced_in": "v0.10.0", "stability": 2, "stabilityText": "Stable", "desc": "

The string_decoder module provides an API for decoding Buffer objects into\nstrings in a manner that preserves encoded multi-byte UTF-8 and UTF-16\ncharacters. It can be accessed using:

\n
const { StringDecoder } = require('string_decoder');\n
\n

The following example shows the basic use of the StringDecoder class.

\n
const { StringDecoder } = require('string_decoder');\nconst decoder = new StringDecoder('utf8');\n\nconst cent = Buffer.from([0xC2, 0xA2]);\nconsole.log(decoder.write(cent));\n\nconst euro = Buffer.from([0xE2, 0x82, 0xAC]);\nconsole.log(decoder.write(euro));\n
\n

When a Buffer instance is written to the StringDecoder instance, an\ninternal buffer is used to ensure that the decoded string does not contain\nany incomplete multibyte characters. These are held in the buffer until the\nnext call to stringDecoder.write() or until stringDecoder.end() is called.

\n

In the following example, the three UTF-8 encoded bytes of the European Euro\nsymbol () are written over three separate operations:

\n
const { StringDecoder } = require('string_decoder');\nconst decoder = new StringDecoder('utf8');\n\ndecoder.write(Buffer.from([0xE2]));\ndecoder.write(Buffer.from([0x82]));\nconsole.log(decoder.end(Buffer.from([0xAC])));\n
", "classes": [ { "textRaw": "Class: StringDecoder", "type": "class", "name": "StringDecoder", "methods": [ { "textRaw": "stringDecoder.end([buffer])", "type": "method", "name": "end", "meta": { "added": [ "v0.9.3" ], "changes": [] }, "signatures": [ { "return": { "textRaw": "Returns: {string}", "name": "return", "type": "string" }, "params": [ { "textRaw": "`buffer` {Buffer|TypedArray|DataView} A `Buffer`, or `TypedArray`, or `DataView` containing the bytes to decode.", "name": "buffer", "type": "Buffer|TypedArray|DataView", "desc": "A `Buffer`, or `TypedArray`, or `DataView` containing the bytes to decode.", "optional": true } ] } ], "desc": "

Returns any remaining input stored in the internal buffer as a string. Bytes\nrepresenting incomplete UTF-8 and UTF-16 characters will be replaced with\nsubstitution characters appropriate for the character encoding.

\n

If the buffer argument is provided, one final call to stringDecoder.write()\nis performed before returning the remaining input.

" }, { "textRaw": "stringDecoder.write(buffer)", "type": "method", "name": "write", "meta": { "added": [ "v0.1.99" ], "changes": [ { "version": "v8.0.0", "pr-url": "https://github.com/nodejs/node/pull/9618", "description": "Each invalid character is now replaced by a single replacement character instead of one for each individual byte." } ] }, "signatures": [ { "return": { "textRaw": "Returns: {string}", "name": "return", "type": "string" }, "params": [ { "textRaw": "`buffer` {Buffer|TypedArray|DataView} A `Buffer`, or `TypedArray`, or `DataView` containing the bytes to decode.", "name": "buffer", "type": "Buffer|TypedArray|DataView", "desc": "A `Buffer`, or `TypedArray`, or `DataView` containing the bytes to decode." } ] } ], "desc": "

Returns a decoded string, ensuring that any incomplete multibyte characters at\nthe end of the Buffer, or TypedArray, or DataView are omitted from the\nreturned string and stored in an internal buffer for the next call to\nstringDecoder.write() or stringDecoder.end().

" } ], "signatures": [ { "params": [ { "textRaw": "`encoding` {string} The character encoding the `StringDecoder` will use. **Default:** `'utf8'`.", "name": "encoding", "type": "string", "default": "`'utf8'`", "desc": "The character encoding the `StringDecoder` will use.", "optional": true } ], "desc": "

Creates a new StringDecoder instance.

" } ] } ], "type": "module", "displayName": "String Decoder" } ] }