Codepoints, Escapes und UTF-16
Unicode weist jedem abstrakten Zeichen einen Codepoint zu. U+1F600 und \u{1F600} beziehen sich direkt auf den Codepoint des Emoji 😀.
Das traditionelle Escape \uXXXX enthält genau eine UTF-16-Codeeinheit. Zeichen oberhalb U+FFFF benötigen zwei Einheiten: ein hohes und ein niedriges Surrogat.
Das Werkzeug analysiert nur explizite Sequenzen und verwendet weder eval noch new Function. Eingaben werden dadurch niemals zu ausführbarem Code.
So konvertierst du Unicode-Escapes
- Wähle Kodieren, um Text in eine Unicode-Notation umzuwandeln.
- Wähle U+, \u{…} oder \uXXXX passend zum Zielformat.
- Wähle Dekodieren, um Unicode-Token wieder in Text umzuwandeln.
- Trenne U+-Token und Klammer-Escapes bei Bedarf mit Leerraum; \uXXXX-Sequenzen können direkt aufeinander folgen.
- Prüfe mit dem Emoji-Beispiel die Behandlung von Surrogatpaaren.
Unicode-Escape- und Surrogatpaar-Beispiele
Die Fälle zeigen BMP-Zeichen, ergänzende Zeichen, drei Notationen und den Umgang mit Surrogatpaaren.
| Eingabe | Ausgabe | Konvertierungsrichtung | Hinweise |
|---|---|---|---|
A |
U+0041 |
Kodieren | ASCII-Codepoint. Zeichen des einfachen lateinischen Alphabets haben einen Codepoint und eine UTF-16-Codeeinheit. |
😀 |
U+1F600 |
Kodieren | Emoji-Codepoint. Das Emoji ist ein Unicode-Skalarwert oberhalb der Basic Multilingual Plane. |
😀 |
\u{1F600} |
Kodieren | Escape mit Klammern. Die ECMAScript-Notation mit Klammern kann den vollständigen Skalarwert direkt schreiben. |
😀 |
\uD83D\uDE00 |
Kodieren | UTF-16-Surrogatpaar. Die vierstellige Escape-Syntax stellt dasselbe Emoji durch eine hohe und eine niedrige Surrogat-Codeeinheit dar. |
U+4F60 U+597D |
你好 |
Dekodieren | Chinesische Codepoints dekodieren. Codepoint-Token können durch Leerzeichen oder Kommas getrennt werden. |
\u0041\u{1F600} |
A😀 |
Dekodieren | Gemischte Escape-Formen. Der strenge Parser kann unterstützte Escape-Formen kombinieren, weist aber fremden Quellcode zurück. |
Unterstützte Syntax und Validierung
Der Decoder akzeptiert U+hex, \u{hex} und \u mit genau vier Hexadezimalstellen. Leerraum darf Token trennen, beliebiger gemischter Text wird aber nicht als Code interpretiert.
Werte oberhalb U+10FFFF, isolierte Werte im Surrogatbereich und unvollständige UTF-16-Paare werden abgelehnt.
- Hexadezimal ist nicht von Groß-/Kleinschreibung abhängig.
- \uXXXX benötigt exakt vier Stellen.
- Auf ein hohes Surrogat muss ein niedriges folgen.
- Ein einzelnes niedriges Surrogat ist ungültig.
- Keine Sequenz wird ausgeführt.
Behandlung ergänzender Zeichen
Beim Kodieren iteriert Array.from über vollständige Codepoints, statt Surrogatpaare zu teilen. U+ und \u{…} erzeugen einen Token pro Zeichen.
Für \uXXXX werden Codepoints oberhalb U+FFFF nach Abzug von 0x10000 in zwei UTF-16-Einheiten zerlegt.
Der Decoder prüft jeden Token, kombiniert Surrogatpaare und ruft String.fromCodePoint nur mit gültigen Skalarwerten auf.
Praktische Einsätze für Unicode-Escapes
Explizite Notation hilft bei unsichtbaren Zeichen und beim Austausch mit Formaten, die eigene Escape-Regeln besitzen.
| Element | Beschreibung |
|---|---|
| Text-Debugging | Unterscheidet Leerraum, ähnlich aussehende Symbole und ergänzende Zeichen. |
| Konfigurationsdateien | Manche Formate verlangen bestimmte Escapes für Nicht-ASCII-Zeichen. |
| Softwaretests | Emoji- und Surrogatfälle decken Abschneidefehler auf. |
| Technische Dokumentation | U+ ist unabhängig von Schriftart und Darstellung. |
| Sichere Analyse | Die Eingabe wird als Daten und nicht als Code behandelt. |
Unicode-Fehler und Grenzen
Ein häufiger Fehler ist, eine UTF-16-Codeeinheit für ein vollständiges Zeichen zu halten. Dadurch entstehen halbe Emoji oder einzelne Surrogate.
JavaScript-, JSON-, CSS- und HTML-Escapes haben unterschiedliche Grammatiken und dürfen nicht gleichgesetzt werden.
- U+D800 bis U+DFFF sind keine einzelnen Skalarwerte.
- U+110000 liegt außerhalb von Unicode.
- \u{…} benötigt eine schließende Klammer.
- Freier Text wird nicht ausgeführt oder interpoliert.
- HTML-Entitäten sind keine Unicode-Escapes.
Unicode-Escapes, Entitäten und Percent-Encoding
Unicode-Escapes beschreiben Zeichen oder Codeeinheiten. HTML-Entitäten gehören zum HTML-Parser; Percent-Encoding stellt Bytes in URL-Komponenten dar.
UTF-8 ist eine Bytekodierung, während \uXXXX UTF-16-Codeeinheiten als Text ausdrückt.
| Element | Beschreibung |
|---|---|
| HTML-Entitäten | Verwenden Formen wie 😀 im HTML-Kontext. |
| Percent-Encoding | Stellt UTF-8-Bytes in URLs als %HH dar. |
| UTF-8-Binärdaten | Kodiert Codepoints als Bytefolgen variabler Länge. |