Skip to content

Decodificatore di stringhe

[Stabile: 2 - Stabile]

Stabile: 2 Stabilità: 2 - Stabile

Codice Sorgente: lib/string_decoder.js

Il modulo node:string_decoder fornisce un'API per decodificare oggetti Buffer in stringhe in modo da preservare i caratteri UTF-8 e UTF-16 multi-byte codificati. È possibile accedervi utilizzando:

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

L'esempio seguente mostra l'uso di base della 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)); // Stampa: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Stampa: €
js
const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent)); // Stampa: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Stampa: €

Quando un'istanza Buffer viene scritta nell'istanza StringDecoder, viene utilizzato un buffer interno per garantire che la stringa decodificata non contenga caratteri multibyte incompleti. Questi vengono conservati nel buffer fino alla successiva chiamata a stringDecoder.write() o fino a quando non viene chiamato stringDecoder.end().

Nell'esempio seguente, i tre byte con codifica UTF-8 del simbolo dell'Euro europeo () vengono scritti su tre operazioni separate:

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]))); // Stampa: €
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]))); // Stampa: €

Classe: StringDecoder

new StringDecoder([encoding])

Aggiunto in: v0.1.99

  • encoding <stringa> La codifica dei caratteri che StringDecoder utilizzerà. Predefinito: 'utf8'.

Crea una nuova istanza di StringDecoder.

stringDecoder.end([buffer])

Aggiunto in: v0.9.3

Restituisce qualsiasi input rimanente memorizzato nel buffer interno come stringa. I byte che rappresentano caratteri UTF-8 e UTF-16 incompleti verranno sostituiti con caratteri di sostituzione appropriati per la codifica dei caratteri.

Se viene fornito l'argomento buffer, viene eseguita una chiamata finale a stringDecoder.write() prima di restituire l'input rimanente. Dopo che end() è stato chiamato, l'oggetto stringDecoder può essere riutilizzato per un nuovo input.

stringDecoder.write(buffer)

[Cronologia]

VersioneModifiche
v8.0.0Ogni carattere non valido viene ora sostituito da un singolo carattere di sostituzione anziché uno per ogni singolo byte.
v0.1.99Aggiunto in: v0.1.99

Restituisce una stringa decodificata, assicurandosi che eventuali caratteri multibyte incompleti alla fine del Buffer, o TypedArray, o DataView vengano omessi dalla stringa restituita e memorizzati in un buffer interno per la successiva chiamata a stringDecoder.write() o stringDecoder.end().