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:
import { StringDecoder } from 'node:string_decoder';
const { StringDecoder } = require('node:string_decoder');
L'esempio seguente mostra l'uso di base della 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)); // Stampa: ¢
const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Stampa: €
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:
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: €
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
Crea una nuova istanza di StringDecoder
.
stringDecoder.end([buffer])
Aggiunto in: v0.9.3
buffer
<stringa> | <Buffer> | <TypedArray> | <DataView> I byte da decodificare.- Restituisce: <stringa>
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]
Versione | Modifiche |
---|---|
v8.0.0 | Ogni carattere non valido viene ora sostituito da un singolo carattere di sostituzione anziché uno per ogni singolo byte. |
v0.1.99 | Aggiunto in: v0.1.99 |
buffer
<stringa> | <Buffer> | <TypedArray> | <DataView> I byte da decodificare.- Restituisce: <stringa>
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()
.