Node.js v24.13.0 文档


字符串解码器#>

【String decoder】

源代码: lib/string_decoder.js

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

【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. It can be accessed using:】

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

以下示例展示了 StringDecoder 类的基本用法。

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

import { StringDecoder } from 'node:string_decoder';
import { Buffer } from 'node:buffer';
const decoder = new StringDecoder('utf8');

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

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Prints: €const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

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

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

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

【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. These are held in the buffer until the next call to stringDecoder.write() or until stringDecoder.end() is called.】

在下面的示例中,欧洲欧元符号()的三个 UTF-8 编码字节是通过三次独立的操作写入的:

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

import { StringDecoder } from 'node:string_decoder';
import { Buffer } from 'node:buffer';
const decoder = new StringDecoder('utf8');

decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); // Prints: €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]))); // Prints: €

类:StringDecoder#>

【Class: StringDecoder

new StringDecoder([encoding])#>

  • encoding <string> StringDecoder 将使用的字符 编码默认值: 'utf8'

创建一个新的 StringDecoder 实例。

【Creates a new StringDecoder instance.】

stringDecoder.end([buffer])#>

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

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

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

【If the buffer argument is provided, one final call to stringDecoder.write() is performed before returning the remaining input. After end() is called, the stringDecoder object can be reused for new input.】

stringDecoder.write(buffer)#>

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

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

Node.js 中文网 - 粤ICP备13048890号