Décodeur de chaînes de caractères
[Stable: 2 - Stable]
Stable: 2 Stabilité: 2 - Stable
Code source: lib/string_decoder.js
Le module node:string_decoder
fournit une API pour décoder les objets Buffer
en chaînes de caractères d'une manière qui préserve les caractères UTF-8 et UTF-16 multi-octets encodés. Il est accessible en utilisant:
import { StringDecoder } from 'node:string_decoder'
const { StringDecoder } = require('node:string_decoder')
L'exemple suivant montre l'utilisation de base de la 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)) // Affiche: ¢
const euro = Buffer.from([0xe2, 0x82, 0xac])
console.log(decoder.write(euro)) // Affiche: €
const { StringDecoder } = require('node:string_decoder')
const decoder = new StringDecoder('utf8')
const cent = Buffer.from([0xc2, 0xa2])
console.log(decoder.write(cent)) // Affiche: ¢
const euro = Buffer.from([0xe2, 0x82, 0xac])
console.log(decoder.write(euro)) // Affiche: €
Lorsqu'une instance Buffer
est écrite dans l'instance StringDecoder
, un tampon interne est utilisé pour s'assurer que la chaîne décodée ne contient aucun caractère multi-octet incomplet. Ceux-ci sont conservés dans le tampon jusqu'au prochain appel à stringDecoder.write()
ou jusqu'à ce que stringDecoder.end()
soit appelé.
Dans l'exemple suivant, les trois octets encodés en UTF-8 du symbole de l'euro européen (€
) sont écrits en trois opérations distinctes:
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]))) // Affiche: €
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]))) // Affiche: €
Classe : StringDecoder
new StringDecoder([encoding])
Ajouté dans la version : v0.1.99
encoding
<string> L'encodage de caractères que leStringDecoder
utilisera. Par défaut :'utf8'
.
Crée une nouvelle instance de StringDecoder
.
stringDecoder.end([buffer])
Ajouté dans la version : v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Les octets à décoder.- Retourne : <string>
Retourne toute entrée restante stockée dans la mémoire tampon interne sous forme de chaîne. Les octets représentant des caractères UTF-8 et UTF-16 incomplets seront remplacés par des caractères de substitution appropriés pour l'encodage de caractères.
Si l'argument buffer
est fourni, un dernier appel à stringDecoder.write()
est effectué avant de retourner l'entrée restante. Une fois end()
appelé, l'objet stringDecoder
peut être réutilisé pour une nouvelle entrée.
stringDecoder.write(buffer)
[Historique]
Version | Modifications |
---|---|
v8.0.0 | Chaque caractère invalide est désormais remplacé par un seul caractère de remplacement au lieu d'un pour chaque octet individuel. |
v0.1.99 | Ajouté dans la version : v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Les octets à décoder.- Retourne : <string>
Retourne une chaîne décodée, en s'assurant que tous les caractères multi-octets incomplets à la fin du Buffer
, du TypedArray
ou du DataView
sont omis de la chaîne retournée et stockés dans une mémoire tampon interne pour le prochain appel à stringDecoder.write()
ou stringDecoder.end()
.