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 Strings auf eine Weise bereit, die codierte Mehrbyte-UTF-8- und UTF-16-Zeichen beibehält. Es kann über Folgendes 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 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:

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 soll. 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 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.0Jedes ungültige Zeichen wird jetzt durch ein einzelnes Ersatzzeichen ersetzt, anstatt eines für jedes einzelne Byte.
v0.1.99Hinzugefügt in: v0.1.99

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.