Node.js v18.18.2 文档


目录

字符串解码器#

稳定性:2 - 稳定

源代码: lib/string_decoder.js

node:string_decoder模块提供了一个 API,用于以保留编码的多字节 UTF-8 和 UTF-16 字符的方式将 Buffer对象解码为字符串。可以使用以下方式访问它:

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

以下示例显示了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)); 

当将Buffer实例写入StringDecoder实例时,将使用内部缓冲区来确保解码后的字符串不包含任何不完整的多字节字符。它们将保存在缓冲区中,直到下一次调用stringDecoder.write()或调用stringDecoder.end()

在以下示例中,欧洲欧元符号 ( ) 的三个 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]))); 

类:StringDecoder#

new StringDecoder([encoding])#

创建一个新的StringDecoder实例。

stringDecoder.end([buffer])#

以字符串形式返回存储在内部缓冲区中的任何剩余输入。表示不完整 UTF-8 和 UTF-16 字符的字节将被替换为适合字符编码的替换字符。

如果提供了buffer参数, 则在返回剩余输入之前执行对stringDecoder.write()的最后一次调用。调用end()后,可以将stringDecoder对象重新用于新输入。

stringDecoder.write(buffer)#

返回解码后的字符串,确保从返回的字符串中省略BufferTypedArrayDataView末尾的任何不完整的多字节字符并将其存储在用于下次调用 stringDecoder.write()stringDecoder.end()的内部缓冲区。

NodeJS中文文档为Read dev Docs平台提供托管,中文NodeJS文档均由英文版NodeJS文档翻译,版权属于nodejs.org