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 :
import { StringDecoder } from 'node:string_decoder';const { StringDecoder } = require('node:string_decoder');L'exemple suivant illustre 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, 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 :
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 : v0.1.99
Crée une nouvelle instance de StringDecoder.
stringDecoder.end([buffer])
Ajouté dans : v0.9.3
buffer<string> | <Buffer> | <TypedArray> | <DataView> Les octets à décoder.- Retourne : <string>
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]
| Version | Modifications |
|---|---|
| v8.0.0 | Chaque caractère non valide est maintenant remplacé par un seul caractère de remplacement au lieu d’un pour chaque octet individuel. |
| v0.1.99 | Ajouté dans : 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 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().