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:
import { StringDecoder } from 'node:string_decoder';
const { StringDecoder } = require('node:string_decoder');
Das folgende Beispiel zeigt die grundlegende Verwendung der Klasse 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)); // Gibt aus: ¢
const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Gibt aus: €
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:
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: €
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
Erstellt eine neue StringDecoder
-Instanz.
stringDecoder.end([buffer])
Hinzugefügt in: v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Die zu dekodierenden Bytes.- Rückgabe: <string>
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.0 | Jedes ungültige Zeichen wird jetzt durch ein einzelnes Ersatzzeichen ersetzt, anstatt für jedes einzelne Byte eines. |
v0.1.99 | Hinzugefügt in: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Die zu dekodierenden Bytes.- Rückgabe: <string>
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.