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 maneira que preserva 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 Buffer é escrita para a instância StringDecoder, um buffer interno é usado para garantir que a string decodificada não contenha caracteres multibyte incompletos. Estes são mantidos no buffer até a próxima chamada de 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

  • encoding <string> A codificação de caracteres encoding que o StringDecoder irá usar. Padrão: 'utf8'.

Cria uma nova instância 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() é 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ãoAlterações
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.99Adicionada em: v0.1.99

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