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:
import { StringDecoder } from 'node:string_decoder';
const { StringDecoder } = require('node:string_decoder');
O exemplo a seguir mostra o uso básico da classe StringDecoder
.
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: €
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:
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: €
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
encoding
<string> A codificação de caractere que oStringDecoder
usará. Padrão:'utf8'
.
Cria uma nova instância de StringDecoder
.
stringDecoder.end([buffer])
Adicionado em: v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Os bytes para decodificar.- Retorna: <string>
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ão | Mudanças |
---|---|
v8.0.0 | Cada caractere inválido agora é substituído por um único caractere de substituição em vez de um para cada byte individual. |
v0.1.99 | Adicionado em: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Os bytes para decodificar.- Retorna: <string>
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()
.