Heim > Artikel > Web-Frontend > Konvertierung des NodeJS-Zeichensatzes
Node.js ist eine sehr beliebte serverseitige JavaScript-Ausführungsumgebung. Beim Schreiben von Node.js-Anwendungen ist zwangsläufig eine Zeichensatzkonvertierung erforderlich. Beim Umgang mit Chinesisch, Japanisch, Koreanisch und anderen Systemen ist eine Zeichensatzkonvertierung erforderlich, die es uns ermöglicht, Text in verschiedenen Kodierungsformaten korrekt zu verarbeiten.
In diesem Artikel stellen wir die Zeichensatzkonvertierung in Node.js vor und zeigen, wie Sie die Iconv-Bibliothek für die Codierungskonvertierung verwenden.
1. Übersicht über Zeichensätze
In Computern sind Zeichensätze ein Schema, das Zeichen numerischen Codes zuordnet. In praktischen Anwendungen verwenden wir normalerweise Zeichenkodierungen wie ASCII, Unicode und UTF-8.
ASCII (American Standard Code for Information Interchange, American Standard Code for Information Interchange) ist eine der frühesten Zeichenkodierungen. Sie unterstützt nur Englisch, Zahlen und eine kleine Anzahl von Sonderzeichen. Die ASCII-Kodierung umfasst insgesamt 128 Zeichen, die durch 7 Binärbits dargestellt werden, wobei das höchste Bit 0 ist. Die ASCII-Kodierung wurde später erweitert, um weitere Zeichensätze wie Latin-1, ISO-8859-Serie usw. zu unterstützen.
Unicode ist ein weltweit einheitliches Zeichenkodierungsschema, das alle Zeichen in verschiedenen Sprachen auf der ganzen Welt umfasst und ihnen eindeutige Codes zuweist. Die Unicode-Kodierung umfasst insgesamt 1.114.112 Zeichen, von denen die Zeichen zwischen 0x0000 und 0xFFFF einer 16-Bit-Kodierung entsprechen, die als Basic Multilingual Plane (BMP)-Zeichen bezeichnet wird, und die Zeichen zwischen 0x010000 und 0x10FFFF einer 32-Bit-Kodierung entsprechen Hilfsflachzeichen. Die Unicode-Kodierung verfügt über mehrere Darstellungsmethoden, z. B. UTF-8, UTF-16 usw.
UTF-8 (Unicode Transformation Format-8, Unicode Transformation Format 8-bit) ist eine Unicode-Kodierung variabler Länge, die 1 bis 4 Bytes zur Darstellung eines Zeichens verwenden kann. Sie unterstützt alle Unicode-Zeichen. Bei der UTF-8-Kodierung werden ASCII-Zeichen weiterhin durch ein Byte dargestellt, während Nicht-ASCII-Zeichen wie chinesische Zeichen durch 2 bis 3 Bytes dargestellt werden. Daher ist es mit der ASCII-Kodierung kompatibel und kann auch Zeichen in verschiedenen Sprachen speichern.
2. Node.js-Zeichensatzkonvertierung
Node.js stellt nativ die Buffer-Klasse bereit, die Binärdaten im Speicher speichern kann und normalerweise in Szenarien wie Netzwerkübertragung und Dateilesen und -schreiben verwendet wird. Wenn wir Binärdaten von externen Ressourcen lesen, müssen wir den Zeichensatz dekodieren und die Binärdaten in eine lesbare Zeichenfolge umwandeln. Wenn wir die Zeichenfolge in Binärdaten umwandeln, müssen wir sie kodieren und die Zeichen in Binärdaten umwandeln.
Node.js bietet einige integrierte Zeichensatzkonvertierungsmodule wie buffer.toString(), Buffer.from() usw., die eine teilweise Codierungskonvertierung von Binärdaten durchführen können. Zum Beispiel:
const buf = Buffer.from('中文'); console.log(buf.toString('utf8')); // 中文 console.log(buf.toString('ascii')); // ��w� console.log(buf.toString('base64')); // 5Lit5paH
Im obigen Beispiel konvertieren wir einen String „Chinese“ in ein Buffer-Objekt und verwenden die toString()-Methode, um ihn in andere Codierungsformate zu konvertieren. Das Ergebnis der UTF8-Kodierung ist korrekt, die Ergebnisse der ASCII-Kodierung und Base64-Kodierung sind jedoch falsch.
Node.js verwendet standardmäßig die utf8-Codierung für die Zeichenfolgenkonvertierung. Wenn der zu konvertierende Zeichensatz nicht mit utf8 kompatibel ist, müssen Sie für die Zeichensatzkonvertierung eine Drittanbieterbibliothek wie iconv verwenden.
3. Verwenden Sie die iconv-Bibliothek zur Zeichensatzkonvertierung.
iconv ist eine kostenlose Open-Source-C-Bibliothek, die zur Konvertierung zwischen verschiedenen Zeichensätzen verwendet wird. In Node.js gibt es ein NPM-Modul namens iconv-lite, ein Paket der iconv-Bibliothek, das leistungsstarke Zeichensatzkonvertierungsfunktionen bereitstellt.
Als nächstes stellen wir vor, wie Sie iconv-lite für die Zeichensatzkonvertierung verwenden.
1. Iconv-lite installieren
Zuerst müssen wir iconv-lite installieren.
npm install iconv-lite
2. String-Kodierungskonvertierung
Die Verwendung von iconv-lite zur Kodierungskonvertierung ist sehr einfach, wir müssen nur die entsprechende Methode aufrufen. Beispielsweise konvertieren wir eine GB2312-codierte Zeichenfolge in die UTF-8-Codierung:
const iconv = require('iconv-lite'); const str = '中文字符串'; const buf = iconv.encode(str, 'gb2312'); const str2 = iconv.decode(buf, 'utf8'); console.log(str2); // 中文字符串
Im obigen Beispiel verwenden wir zunächst die Methode iconv.encode, um die GB2312-codierte Zeichenfolge in ein Buffer-Objekt zu konvertieren, und verwenden dann die Methode iconv.decode Konvertieren Sie ein Buffer-Objekt in eine UTF-8-codierte Zeichenfolge. Die konvertierte Zeichenfolge ist eine korrekte chinesische Zeichenfolge.
3. Stream-Kodierungskonvertierung
Bei der Verarbeitung großer Dateien müssen Sie möglicherweise Streams für die Kodierungskonvertierung verwenden. Hier können wir die von iconv-lite bereitgestellte Iconv-Lite-Stream-Bibliothek verwenden, um die Konvertierung der Stream-Codierung einfach zu implementieren. Beispielsweise konvertieren wir eine Shift_JIS-codierte Datei in die UTF-8-Codierung:
const iconv = require('iconv-lite'); const fs = require('fs'); const iconvStream = iconv.decodeStream('Shift_JIS'); const inputStream = fs.createReadStream('shift-jis-file.txt'); const outputStream = fs.createWriteStream('utf8-file.txt'); inputStream.pipe(iconvStream).pipe(outputStream);
Im obigen Beispiel erstellen wir zunächst einen lesbaren Stream, der die Shift_JIS-codierte Datei liest, und erstellen dann einen beschreibbaren Stream, der UTF-8-codierte Dateien schreibt. Gleichzeitig haben wir über die Methode iconv.decodeStream einen als Shift_JIS codierten Stream erstellt und Aufrufe mit dem lesbaren Stream und dem beschreibbaren Stream verkettet, um eine Stream-Codierungskonvertierung zu erreichen.
4. Zusammenfassung
In diesem Artikel haben wir die Zeichensatzkonvertierung in Node.js und die Verwendung der iconv-lite-Bibliothek für die Codierungskonvertierung vorgestellt. Die Zeichensatzkonvertierung ist eine sehr wichtige Funktion beim Umgang mit chinesischen, japanischen, koreanischen und anderen Systemen. Durch die korrekte Verwendung der Zeichensatzkonvertierung können Probleme wie verstümmelte Zeichen wirksam vermieden werden. Wir hoffen, dass dieser Artikel den Lesern hilft, die Zeichensatzkonvertierung in Node.js besser zu verstehen.
Das obige ist der detaillierte Inhalt vonKonvertierung des NodeJS-Zeichensatzes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!