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 Strings auf eine Weise bereit, die codierte Mehrbyte-UTF-8- und UTF-16-Zeichen beibehält. Es kann über Folgendes 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 der dekodierte String keine unvollständigen Mehrbyte-Zeichen enthält. Diese werden im Puffer gespeichert, bis der nächste Aufruf von stringDecoder.write()
oder stringDecoder.end()
erfolgt.
Im folgenden Beispiel werden die drei UTF-8-codierten Bytes des europäischen Euro-Symbols (€
) in drei separaten 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.- Gibt zurück: <string>
Gibt alle verbleibenden Eingaben, die im internen Puffer gespeichert sind, als String zurück. Bytes, die unvollständige UTF-8- und UTF-16-Zeichen darstellen, werden durch für die Zeichenkodierung geeignete Ersetzungszeichen 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 eines für jedes einzelne Byte. |
v0.1.99 | Hinzugefügt in: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Die zu dekodierenden Bytes.- Gibt zurück: <string>
Gibt eine dekodierte Zeichenkette zurück und stellt sicher, dass alle unvollständigen Multibyte-Zeichen am Ende des Buffer
, oder 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.