Skip to content

Decodificador de cadenas

[Estable: 2 - Estable]

Estable: 2 Estabilidad: 2 - Estable

Código fuente: lib/string_decoder.js

El módulo node:string_decoder proporciona una API para decodificar objetos Buffer en cadenas de una manera que conserva los caracteres UTF-8 y UTF-16 multibyte codificados. Se puede acceder a él usando:

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

El siguiente ejemplo muestra el uso básico de la clase 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: €

Cuando una instancia de Buffer se escribe en la instancia de StringDecoder, se usa un búfer interno para garantizar que la cadena decodificada no contenga ningún carácter multibyte incompleto. Estos se mantienen en el búfer hasta la siguiente llamada a stringDecoder.write() o hasta que se llama a stringDecoder.end().

En el siguiente ejemplo, los tres bytes codificados en UTF-8 del símbolo del euro europeo () se escriben en tres operaciones 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: €

Clase: StringDecoder

new StringDecoder([encoding])

Agregado en: v0.1.99

Crea una nueva instancia de StringDecoder.

stringDecoder.end([buffer])

Agregado en: v0.9.3

Devuelve cualquier entrada restante almacenada en el búfer interno como una cadena. Los bytes que representan caracteres UTF-8 y UTF-16 incompletos se reemplazarán con caracteres de sustitución apropiados para la codificación de caracteres.

Si se proporciona el argumento buffer, se realiza una llamada final a stringDecoder.write() antes de devolver la entrada restante. Después de llamar a end(), el objeto stringDecoder puede reutilizarse para una nueva entrada.

stringDecoder.write(buffer)

[Historial]

VersiónCambios
v8.0.0Cada carácter no válido ahora se reemplaza por un solo carácter de reemplazo en lugar de uno por cada byte individual.
v0.1.99Añadido en: v0.1.99

Devuelve una cadena decodificada, asegurando que cualquier carácter multibyte incompleto al final del Buffer, o TypedArray, o DataView se omita de la cadena devuelta y se almacene en un búfer interno para la siguiente llamada a stringDecoder.write() o stringDecoder.end().