Zeichencodierungs-Konverter (UTF-8 / GBK, Kodierungserkennung und Reparatur chinesischer Zeichendarstellung)
Zeichencodierungs-Konverter (UTF-8 / GBK, Kodierungserkennung und Reparatur chinesischer Zeichendarstellung): Bytes und Unicode-Codepoints anzeigen, Kodierung erkennen und fehlerhafte Zeichen lokal reparieren
Wie funktioniert der Zeichencodierungs-Konverter? Bytes prüfen, Kodierungen erkennen und Zeichensalat reparieren
Ein Zeichencodierungs-Konverter wandelt Text zwischen verschiedenen Zeichencodierungen um und zeigt gleichzeitig UTF-8-Bytes und Unicode-Codepoints an.
Quell- und Zielkodierung auswählen und die Konvertierung durchführen. Wenn die ursprüngliche Kodierung unbekannt ist, kann zunächst eine Erkennung ausgeführt werden. Die gesamte Verarbeitung erfolgt lokal im Browser.
Drei häufige Ursachen für chinesischen Zeichensalat
Die erste Ursache ist das Lesen von UTF-8-Bytes als GBK, wodurch häufig Kombinationen wie „浣犲ソ“ entstehen. Die zweite ist das Lesen von GBK-Bytes als Single-Byte-Kodierung, wodurch Kombinationen aus lateinischen Buchstaben und Symbolen entstehen. Die dritte ist ein BOM am Anfang eines Byte-Streams, das vom Empfänger nicht entsprechend der angegebenen Kodierung interpretiert wird. Die Diagnose ist einfach: Das Erscheinungsbild des Zeichensalats prüfen und anschließend die entsprechende Rückkonvertierung verwenden.
Die wesentlichen Unterschiede zwischen UTF-8, GBK, UTF-16 und UTF-32
UTF-8 ist eine variable Kodierung mit 1 bis 4 Bytes pro Zeichen. Englische Zeichen benötigen 1 Byte, übliche chinesische Zeichen 3 Bytes. Deshalb ist UTF-8 der De-facto-Standard für Webseiten und APIs. GBK und GB2312 sind chinesische Double-Byte-Kodierungen, die vor allem in chinesischen Umgebungen und älteren Systemen vorkommen. UTF-16 und UTF-32 verwenden breitere Zeichendarstellungen. UTF-16 ist intern in Windows und in einigen Dateiformaten verbreitet, während UTF-32 Codepoint-Berechnungen vereinfacht, dafür aber mehr Speicher benötigt. Da unterschiedliche Kodierungen für denselben Text unterschiedliche Bytefolgen erzeugen, haben Bytes ohne Kodierungsinformationen keine eindeutige Textinterpretation.
Warum kann die Kodierungserkennung nur Kandidaten und eine Konfidenz liefern?
Eine Bytefolge enthält normalerweise keine eigene Kodierungsdeklaration. Die Erkennung basiert daher auf Regeln und Test-Decodierungen: Zuerst wird nach einem BOM gesucht, anschließend geprüft, ob alle Bytes im ASCII-Bereich liegen, danach eine strikte UTF-8-Decodierung validiert und schließlich geprüft, ob eine GBK-Decodierung plausiblen chinesischen Text ergibt. Diese Methode deckt viele typische Fälle ab, aber kurze Texte und reine Symbolfolgen können mehrere Kodierungen zulassen. Daher liefert das Werkzeug Kandidaten, Konfidenz und Begründungen statt einer absoluten Aussage.
Warum lassen sich UTF-8 und GBK nicht beliebig ineinander umwandeln?
UTF-8 kann wesentlich mehr Zeichen darstellen als GBK. GBK deckt chinesische Zeichen und einen Teil der Symbole ab. Zeichen, die GBK nicht enthält, beispielsweise viele Emoji und seltene Zeichen, können daher nicht als GBK-Bytes ausgegeben werden. In diesem Fall meldet das Werkzeug das nicht unterstützte Zeichen, anstatt es stillschweigend zu verwerfen. Die Konvertierung von GBK nach UTF-8 hat diese Einschränkung normalerweise nicht, da UTF-8 einen größeren Zeichenvorrat besitzt.
Wofür werden Bytefolgen und Unicode-Codepoints verwendet?
Eine Bytefolge ist die tatsächliche Darstellung, die in Dateien gespeichert und über Netzwerke übertragen wird. Sie ist wichtig bei der Fehlersuche in Zeichensalat, bei der Prüfung von APIs und beim Vergleich von Datenbankfeldern. Ein Unicode-Codepoint wie U+4F60 identifiziert ein Zeichen unabhängig von der konkreten Kodierung. Damit lässt sich zuverlässig feststellen, ob zwei Zeichen tatsächlich identisch sind. Das Werkzeug zeigt beide Perspektiven zur gegenseitigen Kontrolle.
Was kann dieses Werkzeug und was kann es nicht?
Es unterstützt Konvertierungen zwischen UTF-8, GBK, GB2312, UTF-16LE/BE und UTF-32LE/BE, die Anzeige von Bytes und Codepoints, Kodierungserkennung sowie die Reparatur zweier häufiger Arten von Zeichensalat per Klick. Es errät keine Kodierung ohne ausreichende Hinweise, übersetzt oder korrigiert keinen Text und verarbeitet keine Binärdateien oder Bilder. UTF-8 und UTF-16 verwenden die nativen Decoder des Browsers, GBK und GB2312 die vom Browser unterstützten Decoder. Die Byte-Ausgabe von UTF-8 nach GBK verwendet eine lokal aufgebaute Zeichentabelle und lädt keine Bibliothek eines Drittanbieters herunter. Die gesamte Konvertierung erfolgt lokal im Browser und eingegebene Inhalte werden nicht auf den Server übertragen.
Kann chinesischer Zeichensalat direkt repariert werden? Zuerst muss die Ursache erkannt werden.
Zeichensalat bedeutet nicht unbedingt, dass die Zeichen beschädigt wurden. Häufig wurden dieselben Bytes lediglich mit der falschen Kodierung decodiert. Werden UTF-8-Bytes als GBK gelesen, können Kombinationen wie „浣犲ソ“ entstehen; werden GBK-Bytes als Single-Byte-Kodierung gelesen, können lateinische Buchstaben und Symbole erscheinen. Sobald die Ursache bekannt ist, kann die entsprechende Rückkonvertierung den Text wiederherstellen.
Wenn die ursprüngliche Kodierung völlig unbekannt ist, kann die Hexadezimaldarstellung der Bytes eingefügt und zunächst die Kodierungserkennung ausgeführt werden. Anschließend stehen Kandidaten und Entscheidungsgrundlagen zur Auswahl der Konvertierungsrichtung zur Verfügung.
- Bytes und Unicode-Codepoints werden gemeinsam angezeigt, um festzustellen, ob zwei Zeichen tatsächlich identisch sind.
- Die Kodierungserkennung verwendet vier Schritte: BOM, reines ASCII, strikte UTF-8-Decodierung und GBK-Wahrscheinlichkeit und liefert Kandidaten und Konfidenz.
- Unterstützt Konvertierungen zwischen UTF-8, GBK, GB2312, UTF-16LE/BE und UTF-32LE/BE.
- Bietet die Reparatur zweier häufiger Arten von Zeichensalat per Klick: UTF-8-Bytes, die als GBK gelesen wurden, und GBK-Bytes, die als Single-Byte-Kodierung gelesen wurden.
- Wenn der Zielzeichensatz ein Zeichen nicht darstellen kann, wird dieses Zeichen ausdrücklich gemeldet und nicht stillschweigend verworfen.
- Die gesamte Konvertierung erfolgt lokal im Browser, die Eingaben werden nicht auf den Server hochgeladen und eine Registrierung ist nicht erforderlich.