Skip to content

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:

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

L'exemple suivant montre l'utilisation de base de la 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)) // Affiche: ¢

const euro = Buffer.from([0xe2, 0x82, 0xac])
console.log(decoder.write(euro)) // Affiche: €
js
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:

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

Classe : StringDecoder

new StringDecoder([encoding])

Ajouté dans la version : v0.1.99

  • encoding <string> L'encodage de caractères que le StringDecoder utilisera. Par défaut : 'utf8'.

Crée une nouvelle instance de StringDecoder.

stringDecoder.end([buffer])

Ajouté dans la version : v0.9.3

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]

VersionModifications
v8.0.0Chaque caractère invalide est désormais remplacé par un seul caractère de remplacement au lieu d'un pour chaque octet individuel.
v0.1.99Ajouté dans la version : v0.1.99

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().