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:
import { StringDecoder } from 'node:string_decoder'
const { StringDecoder } = require('node:string_decoder')
El siguiente ejemplo muestra el uso básico de la clase 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: €
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:
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: €
Clase: StringDecoder
new StringDecoder([encoding])
Agregado en: v0.1.99
encoding
<string> La codificación de caracteres que utilizaráStringDecoder
. Predeterminado:'utf8'
.
Crea una nueva instancia de StringDecoder
.
stringDecoder.end([buffer])
Agregado en: v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Los bytes a decodificar.- Devuelve: <string>
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ón | Cambios |
---|---|
v8.0.0 | Cada 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.99 | Añadido en: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Los bytes a decodificar.- Devuelve: <string>
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()
.