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 multibyte UTF-8 e UTF-16 codificati. È accessibile usando:

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

L'esempio seguente mostra l'utilizzo 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 mantenuti nel buffer fino alla successiva chiamata a stringDecoder.write() o fino a quando viene chiamata stringDecoder.end().

Nell'esempio seguente, i tre byte codificati UTF-8 del simbolo dell'euro europeo () vengono scritti in 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 <string> La codifica dei caratteri encoding 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 saranno 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 la chiamata a end(), l'oggetto stringDecoder può essere riutilizzato per nuovi input.

stringDecoder.write(buffer)

[Cronologia]

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

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