Unicode-Konverter
Gegenseitige Konvertierung von Text und Unicode-Kodierung, mehrere Ausgabeformate unterstützt
Zeichen-Codepoint-Details (zum Kopieren klicken)
Was ist Unicode?
Unicode ist ein Industriestandard in der Informatik, der die meisten Schriftsysteme der Welt kodiert. Jedem Unicode-Zeichen wird eine einzigartige Nummer zugewiesen, der sogenannte Code Point, üblicherweise hexadezimal mit U+-Präfix angegeben, z.B. U+4E2D für das chinesische Zeichen '中'. Das Unicode-Konvertierungswerkzeug kann Text in verschiedene Unicode-Darstellungsformate konvertieren und Unicode-Kodierungen zurück in Text umwandeln. Unicode beschreibt Zeichen über Codepoints, während Kodierungen wie UTF-8 festlegen, wie diese Codepoints als Bytes gespeichert werden. Das ist wichtig, wenn Text mit Emoji, Akzenten, CJK-Zeichen, Symbolen, Steuerzeichen oder gemischten Schriften analysiert wird. Ein sichtbares Zeichen kann aus mehreren Codepoints bestehen, etwa bei kombinierenden Zeichen oder Emoji-Sequenzen. Das Werkzeug hilft beim Debuggen von Mojibake, Normalisierung, Escape-Sequenzen und unsichtbaren Zeichen.
Verwendung
Schritte
- Geben Sie den umzuwandelnden Text ein oder fügen Sie ihn in das Eingabefeld ein
- Wählen Sie die Umwandlungsrichtung: Text zu Unicode oder Unicode zu Text
- Wählen Sie das Ausgabeformat: \uXXXX oder U+XXXX (verfügbar beim Kodieren)
- Die Ergebnisse erscheinen automatisch; mit einem Klick können Sie sie kopieren oder Eingabe und Ausgabe tauschen
Kodierungshinweise
- Unicode-Escape-Formate sind nützlich für Code und Debugging, verringern aber die Lesbarkeit bei normalen Texten.
- Überprüfen Sie beim Dekodieren Surrogate-Paare und Emoji-Ausgabe; das Aufteilen eines Paars kann fehlerhafte Zeichen erzeugen.
Anwendungsfälle
Technisches Prinzip
Der Unicode-Standard (ISO/IEC 10646) weist jedem Zeichen über 17 Ebenen (U+0000 bis U+10FFFF) einen eindeutigen numerischen Codepoint zu. Die Basic Multilingual Plane (BMP, Ebene 0) umfasst U+0000–U+FFFF und enthält nahezu alle modernen Schriftsysteme einschließlich CJK Unified Ideographs. Ergänzende Ebenen (1–16) enthalten historische Schriften, seltene CJK-Zeichen, Emoji und Sonderzeichen. Das Tool konvertiert zwischen lesbarem Text und zwei maschinenorientierten Darstellungen: JavaScript-artige \uXXXX-Escape-Sequenzen und die Standardnotation U+XXXX. UTF-16 ist die interne Kodierung von JavaScript-Zeichenfolgen — jedes BMP-Zeichen wird als ein einzelnes 16-Bit-Code-Unit gespeichert, das seinem Codepoint entspricht, während ergänzende Zeichen (U+10000 und darüber) als Surrogate-Paare kodiert werden: Vom Codepoint wird 0x10000 subtrahiert, sodass ein 20-Bit-Wert verbleibt, der dann in ein 10-Bit-High-Surrogate (0xD800 + ((cp - 0x10000) >> 10)) und ein 10-Bit-Low-Surrogate (0xDC00 + ((cp - 0x10000) & 0x3FF)) aufgeteilt wird. Der Kodiermodus des Tools erkennt ergänzende Codepoints über String.prototype.codePointAt() und erzeugt die korrekte Doppel-Escape-Sequenz für das \uXXXX-Format. Für das U+XXXX-Format wird der vollständige Codepoint direkt angezeigt. Der Dekodiermodus verarbeitet drei Syntaxen: \uXXXX (vier Hexadezimalziffern, nur BMP), \u{XXXXX} (ES6-Geschweifte-Klammer-Syntax für den gesamten Unicode-Bereich) und U+XXXX (die Standardnotation mit variabler Hexlänge). Der reguläre Ausdruck /\\u\{([0-9a-fA-F]+)\}/g behandelt geschweifte-Klammer-Escapes und leitet sie an String.fromCodePoint() weiter, während /\\u([0-9a-fA-F]{4})/g traditionelle Escapes über String.fromCharCode() verarbeitet. Die korrekte Mischung beider rekonstruiert Surrogate-Paare, wenn ein ergänzendes Zeichen als zwei \u-Escapes kodiert wurde. Die UTF-8-Kodierung ist relevant, weil sie die Bytelänge bestimmt: Ein BMP-Zeichen wie „中“ (U+4E2D) wird als 3 UTF-8-Bytes kodiert (E4 B8 AD), während ein Emoji wie „😀“ (U+1F600) 4 Bytes benötigt (F0 9F 98 80). Der Zeichenzähler des Tools unterscheidet zwischen Codepoint-Anzahl und UTF-16-Code-Unit-Anzahl — eine nützliche Unterscheidung beim Debuggen von Längenbegrenzungen in Datenbanken, APIs oder Formularfeldern, die Code-Units statt Zeichen zählen.
- Codepoint-Iteration: String.prototype.codePointAt(pos) gibt den vollständigen Codepoint für ergänzende Zeichen zurück, anders als charCodeAt(), das nur das High-Surrogate liefert — das Tool verwendet den Spread-Operator [...str] zur iteration nach Codepoints, der intern das Zeichenketten-Iterator-Protokoll aufruft.
- Surrogate-Paar-Mathematik: Für einen ergänzenden Codepoint CP > 0xFFFF ist das High-Surrogate Math.floor((CP - 0x10000) / 0x400) + 0xD800 und das Low-Surrogate ((CP - 0x10000) % 0x400) + 0xDC00 — der Kodiermodus wendet diese Formel an, um gültige \uD800\uDC00-Paare zu erzeugen.
- Dekodier-Regex-Pipeline: Drei Muster werden nacheinander ausgeführt — \u{XXXXX} (ES6-Geschweifte Klammern) → \uXXXX (vierstelliger Hexadezimalwert) → U+XXXX (Standardnotation) — wobei fromCodePoint() die geschweifte-Klammer- und U+-Pfade behandelt und fromCharCode() den traditionellen vierstelligen Pfad.
- UTF-8-Byte-Struktur: BMP-Zeichen verwenden 1–3 UTF-8-Bytes (ASCII = 1 Byte, Lateinisch ergänzend = 2 Bytes, CJK = 3 Bytes); ergänzende Zeichen verwenden 4 Bytes nach dem Muster 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx — der Bytezähler des Tools nutzt new Blob([str]).size für genaue Messung.
- Codepoint gegen Code-Unit: Ein einzelnes sichtbares Zeichen kann mehrere Codepoints belegen (z. B. é kann U+00E9 oder U+0065 + U+0301 mit kombinierendem Akut sein) — das Tool meldet sowohl charCount (UTF-16-Code-Units) als auch codepointCount (Unicode-Skalarwerte), um diese Abweichung sichtbar zu machen.
- Unicode-Ebenen-Übersicht: Ebene 0 (BMP) = moderne Schriften, Ebene 1 (SMP) = historisch + Emoji + Mathematik, Ebene 2 (SIP) = seltene CJK-Zeichen, Ebene 14 (SSP) = Tags + Variationsselektoren, Ebenen 15–16 = Privatgebrauch — der Kodiermodus behandelt alle Ebenen korrekt über codePointAt().
- \u- gegen U+-Notation: \uXXXX ist die JavaScript/Java/C-Escape-Sequenz (nur BMP ohne geschweifte Klammern); U+XXXX ist die kanonische Notation des Unicode-Konsortiums (mindestens 4 Hexadezimalziffern, keine Obergrenze) — der Formatumschalter des Tools wechselt zwischen diesen Darstellungen.
Beispiele
Chinesisch in Unicode-Escape
Eingabe: 你好世界 (4 CJK-Zeichen, 12 UTF-8-Bytes)
Ausgabe: \u4f60\u597d\u4e16\u754c
Hinweis: nur BMP-Codepunkte; nützlich in JSON-Zeichenketten, JavaScript-Literalen und LogdateienEmoji als Surrogatpaar-Escape
Eingabe: 😀🎉 (2 Emojis, jedes über U+FFFF)
Ausgabe: \uD83D\uDE00\uD83C\uDF89
Hinweis: Nicht-BMP-Zeichen werden als UTF-16-Surrogatpaar kodiert; ältere JS-Engines benötigen String.fromCodePoint für einen Round-TripUnicode-Escapes dekodieren
Eingabe: \u4e2d\u6587\u6d4b\u8bd5
Ausgabe: 中文测试
Hinweis: die maskierte Zeichenkette einfügen, das Tool kehrt die Kodierung um; bei der Fehlersuche von CJK-Daten überprüfen, ob die Ausgabe-Bytes mit der Quelle übereinstimmenFAQ
Was zeigt dieses Tool für jedes Zeichen an?
Codepoint (dezimal und hex), Block-Name (z. B. Basic Latin, CJK Unified Ideographs), Kategorie (Buchstabe, Zahl, Symbol, Satzzeichen usw.), Unicode-Name sowie UTF-8-, UTF-16- und UTF-32-Byte-Darstellungen. Praktisch zum Debuggen von Encoding-Problemen und für die Wahl des richtigen Zeichens.
Was ist der Unterschied zwischen UTF-8, UTF-16 und UTF-32?
Alle drei kodieren dieselben Unicode-Zeichen. UTF-8 belegt 1-4 Bytes pro Codepoint und ist Byte-kompatibel zu ASCII (das dominante Web-Encoding). UTF-16 nutzt 2 oder 4 Bytes (intern in JavaScript und Windows). UTF-32 belegt immer 4 Bytes (selten auf der Leitung, häufig im Speicher).
Warum erscheint '𝓗' als zwei UTF-16-Code-Units?
Codepoints oberhalb von U+FFFF (außerhalb der Basic Multilingual Plane) werden in UTF-16 als 'Surrogate Pair' kodiert: zwei 16-Bit-Hälften. JavaScripts string.length zählt das als 2; Array.from(str) behandelt es als 1. Die Seite zeigt beide Sichten, damit du Überraschungen bei der Längenzählung debuggen kannst.
Was ist eine Normalisierungsform (NFC/NFD/NFKC/NFKD)?
Unicode erlaubt mehrere Darstellungen desselben sichtbaren Texts - é kann ein Codepoint sein (U+00E9) oder e + kombinierender Akut (U+0065 U+0301). NFC setzt sie zusammen, NFD zerlegt. NFKC/NFKD lösen zusätzlich Kompatibilitätszeichen auf (½ → 1/2). Normalisiere immer vor String-Vergleich oder Hashing.
Warum werden Emojis manchmal als Kästchen angezeigt?
Die Schriftart deines Browsers enthält dieses Glyph nicht. Moderne Emojis nutzen ZWJ-Sequenzen (z. B. 👨👩👧 = Mann + ZWJ + Frau + ZWJ + Mädchen), die spezielle Schriftarten brauchen, um als ein Bild gerendert zu werden; ältere Schriften zeigen drei einzelne Emojis oder Kästchen.
Wie suche ich ein Zeichen über seinen Namen?
Gib den Namen (oder einen Teil davon) in das Suchfeld ein. Die Namen folgen der offiziellen Unicode-Namensliste (LATIN SMALL LETTER A, GREEK CAPITAL LETTER OMEGA, MUSICAL SYMBOL G CLEF). Gängige Emojis haben zusätzlich einen 'CLDR short name', den die Seite ebenfalls erkennt.
Wird meine Eingabe hochgeladen?
Nein. Die Suche nutzt eine Unicode-Datenbank im Browser. Es wird nichts hochgeladen.