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:
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 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:
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 caracteres encoding que oStringDecoder
irá usar. Padrão:'utf8'
.
Cria uma nova instância StringDecoder
.
stringDecoder.end([buffer])
Adicionado em: v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Os bytes a serem decodificados.- 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()
é 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 | Alterações |
---|---|
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 | Adicionada em: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Os bytes a serem decodificados.- Retorna: <string>
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()
.