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:
import { StringDecoder } from 'node:string_decoder'
const { StringDecoder } = require('node:string_decoder')
L'esempio seguente mostra l'utilizzo 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 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:
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
encoding
<string> La codifica dei caratteri encoding cheStringDecoder
utilizzerà. Predefinito:'utf8'
.
Crea una nuova istanza di StringDecoder
.
stringDecoder.end([buffer])
Aggiunto in: v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> I byte da decodificare.- Restituisce: <string>
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]
Versione | Modifiche |
---|---|
v8.0.0 | Ogni carattere non valido viene ora sostituito da un singolo carattere di sostituzione invece di uno per ogni singolo byte. |
v0.1.99 | Aggiunto in: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> I byte da decodificare.- Restituisce: <string>
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()
.