Skip to content

String-Decoder

[Stabil: 2 - Stabil]

Stabil: 2 Stabilität: 2 - Stabil

Quellcode: lib/string_decoder.js

Das Modul node:string_decoder stellt eine API zum Dekodieren von Buffer-Objekten in Zeichenketten auf eine Art und Weise bereit, die kodierte Multibyte-UTF-8- und UTF-16-Zeichen beibehält. Es kann wie folgt aufgerufen werden:

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

Das folgende Beispiel zeigt die grundlegende Verwendung der Klasse 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)); // Gibt aus: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Gibt aus: €
js
const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent)); // Gibt aus: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Gibt aus: €

Wenn eine Buffer-Instanz in die StringDecoder-Instanz geschrieben wird, wird ein interner Puffer verwendet, um sicherzustellen, dass die dekodierte Zeichenkette keine unvollständigen Multibyte-Zeichen enthält. Diese werden im Puffer gehalten, bis der nächste Aufruf von stringDecoder.write() erfolgt oder bis stringDecoder.end() aufgerufen wird.

Im folgenden Beispiel werden die drei UTF-8-kodierten Bytes des europäischen Euro-Symbols () über drei separate Operationen geschrieben:

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]))); // Gibt aus: €
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]))); // Gibt aus: €

Klasse: StringDecoder

new StringDecoder([encoding])

Hinzugefügt in: v0.1.99

  • encoding <string> Die Zeichen-Kodierung, die der StringDecoder verwenden wird. Standard: 'utf8'.

Erstellt eine neue StringDecoder-Instanz.

stringDecoder.end([buffer])

Hinzugefügt in: v0.9.3

Gibt alle verbleibenden Eingaben, die im internen Puffer gespeichert sind, als Zeichenkette zurück. Bytes, die unvollständige UTF-8- und UTF-16-Zeichen darstellen, werden durch für die Zeichenkodierung geeignete Ersatzzeichen ersetzt.

Wenn das buffer-Argument angegeben wird, wird ein letzter Aufruf von stringDecoder.write() durchgeführt, bevor die verbleibende Eingabe zurückgegeben wird. Nachdem end() aufgerufen wurde, kann das stringDecoder-Objekt für neue Eingaben wiederverwendet werden.

stringDecoder.write(buffer)

[Verlauf]

VersionÄnderungen
v8.0.0Jedes ungültige Zeichen wird jetzt durch ein einzelnes Ersatzzeichen ersetzt, anstatt für jedes einzelne Byte eines.
v0.1.99Hinzugefügt in: v0.1.99

Gibt eine dekodierte Zeichenkette zurück, wobei sichergestellt wird, dass alle unvollständigen Multibyte-Zeichen am Ende des Buffer, TypedArray oder DataView aus der zurückgegebenen Zeichenkette weggelassen und in einem internen Puffer für den nächsten Aufruf von stringDecoder.write() oder stringDecoder.end() gespeichert werden.