Node.js v18.12.1 documentation


Table of contents

String decoder#

Stability: 2 - Stable

Source Code: lib/string_decoder.js

The node:string_decoder module provides an API for decoding Buffer objects into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 characters. node:string_decoder模块提供了一个API,用于以保留编码的多字节UTF-8和UTF-16字符的方式将Buffer对象解码为字符串。It can be accessed using:可通过以下方式访问:

const { StringDecoder } = require('node:string_decoder');

The following example shows the basic use of the StringDecoder class.以下示例显示StringDecoder类的基本用法。

const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent));

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro));

When a Buffer instance is written to the StringDecoder instance, an internal buffer is used to ensure that the decoded string does not contain any incomplete multibyte characters. Buffer实例写入StringDecoder实例时,使用内部缓冲区确保解码的字符串不包含任何不完整的多字节字符。These are held in the buffer until the next call to stringDecoder.write() or until stringDecoder.end() is called.这些数据保存在缓冲区中,直到下一次调用stringDecoder.write()或调用stringDecoder.end()

In the following example, the three UTF-8 encoded bytes of the European Euro symbol () are written over three separate operations:在以下示例中,欧洲欧元符号()的三个UTF-8编码字节通过三个单独的操作写入:

const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC])));