Skip to content

Decodificador de String

[Estável: 2 - Estável]

Estável: 2 Estabilidade: 2 - Estável

Código Fonte: lib/string_decoder.js

O módulo node:string_decoder fornece uma API para decodificar objetos Buffer em strings de uma forma que preserve caracteres UTF-8 e UTF-16 multibyte codificados. Ele pode ser acessado usando:

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

O exemplo a seguir mostra o uso básico da classe StringDecoder.

js
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)); // Imprime: ¢

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

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

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

Quando uma instância de Buffer é escrita na instância de StringDecoder, um buffer interno é usado para garantir que a string decodificada não contenha nenhum caractere multibyte incompleto. Eles são mantidos no buffer até a próxima chamada para stringDecoder.write() ou até que stringDecoder.end() seja chamado.

No exemplo a seguir, os três bytes codificados em UTF-8 do símbolo do Euro Europeu () são escritos em três operações separadas:

js
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]))); // Imprime: €
js
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]))); // Imprime: €

Classe: StringDecoder

new StringDecoder([encoding])

Adicionado em: v0.1.99

Cria uma nova instância de StringDecoder.

stringDecoder.end([buffer])

Adicionado em: v0.9.3

Retorna qualquer entrada restante armazenada no buffer interno como uma string. Bytes representando caracteres UTF-8 e UTF-16 incompletos serão substituídos por caracteres de substituição apropriados para a codificação de caracteres.

Se o argumento buffer for fornecido, uma chamada final para stringDecoder.write() será executada antes de retornar a entrada restante. Depois que end() é chamado, o objeto stringDecoder pode ser reutilizado para novas entradas.

stringDecoder.write(buffer)

[Histórico]

VersãoMudanças
v8.0.0Cada caractere inválido agora é substituído por um único caractere de substituição em vez de um para cada byte individual.
v0.1.99Adicionado em: v0.1.99

Retorna uma string decodificada, garantindo que quaisquer caracteres multibyte incompletos no final do Buffer, ou TypedArray, ou DataView sejam omitidos da string retornada e armazenados em um buffer interno para a próxima chamada para stringDecoder.write() ou stringDecoder.end().