Skip to content

Décodeur de chaîne

[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 illustre 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, une mémoire tampon interne est utilisée pour s'assurer que la chaîne décodée ne contient aucun caractère multi-octets incomplet. Ceux-ci sont conservés dans la mémoire 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 sur 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 : v0.1.99

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

Crée une nouvelle instance de StringDecoder.

stringDecoder.end([buffer])

Ajouté dans : v0.9.3

Retourne toute entrée restante stockée dans le 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 des caractères.

Si l’argument buffer est fourni, un dernier appel à stringDecoder.write() est effectué avant de retourner l’entrée restante. Une fois que end() est appelé, l’objet stringDecoder peut être réutilisé pour une nouvelle entrée.

stringDecoder.write(buffer)

[Historique]

VersionModifications
v8.0.0Chaque caractère non valide est maintenant remplacé par un seul caractère de remplacement au lieu d’un pour chaque octet individuel.
v0.1.99Ajouté dans : v0.1.99

Retourne une chaîne décodée, en s’assurant que tous les caractères multioctets incomplets à la fin du Buffer, du TypedArray ou du DataView sont omis de la chaîne retournée et stockés dans un tampon interne pour le prochain appel à stringDecoder.write() ou stringDecoder.end().