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 preserva los caracteres UTF-8 y UTF-16 multibyte codificados. Se puede acceder 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 string. 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
se puede reutilizar para nueva entrada.
stringDecoder.write(buffer)
[Historia]
Versión | Cambios |
---|---|
v8.0.0 | Ahora cada carácter inválido se reemplaza por un solo carácter de reemplazo en lugar de uno por cada byte individual. |
v0.1.99 | Agregado en: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Los bytes a decodificar.- Devuelve: <string>
Devuelve una string decodificada, asegurando que cualquier carácter multibyte incompleto al final del Buffer
, o TypedArray
, o DataView
se omita de la string devuelta y se almacene en un búfer interno para la siguiente llamada a stringDecoder.write()
o stringDecoder.end()
.