Vollständige Tabelle URL-kodierter Zeichen (ASCII + Unicode)
Vollständige Referenztabelle URL-kodierter Zeichen. Behandelt alle druckbaren ASCII-Zeichen (32-126), gängige Unicode-Zeichen und ihre prozentkodierten Entsprechungen gemäß RFC 3986.
ASCII-Steuer- und Sonderzeichen
ASCII-Zeichen im Bereich 0-31 sowie das Zeichen 127 sind Steuerzeichen. Diese sind nicht druckbar und müssen in URLs stets prozentkodiert werden. Die im URL-Kontext am häufigsten anzutreffenden Steuerzeichen sind das Leerzeichen (ASCII 32), der horizontale Tabulator (ASCII 9) und die Zeilenumbruchzeichen (ASCII 10 und 13).
Gemäß RFC 3986 muss jedes Oktett, das weder ein nicht reserviertes Zeichen, noch ein für seinen reservierten Zweck verwendetes reserviertes Zeichen, noch ein prozentkodiertes Triplett ist, prozentkodiert werden. In der Praxis bedeutet das, dass die meisten nicht alphanumerischen Zeichen in URI-Komponenten kodiert werden sollten.
| Zeichen | ASCII-Code | URL-kodiert | Beschreibung |
|---|---|---|---|
| (Tab) | 9 | %09 |
Horizontaler Tabulator |
| (LF) | 10 | %0A |
Zeilenvorschub |
| (CR) | 13 | %0D |
Wagenrücklauf |
| (Leerzeichen) | 32 | %20 |
Leerzeichen |
Druckbare ASCII-Zeichen
Nachfolgend findest du eine vollständige Referenz aller druckbaren ASCII-Zeichen (Codes 32-126) und ihrer URL-kodierten Formen. Zeichen, die in RFC 3986 als "nicht reserviert" gekennzeichnet sind, müssen nicht kodiert werden. Reservierte Zeichen müssen kodiert werden, wenn sie außerhalb ihres reservierten Zwecks verwendet werden.
| Zeichen | ASCII | Hex | URL-kodiert | Typ |
|---|---|---|---|---|
| (Leerzeichen) | 32 | 20 | %20 |
Sonderzeichen |
| ! | 33 | 21 | %21 |
Reserviert |
| " | 34 | 22 | %22 |
Unsicher |
| # | 35 | 23 | %23 |
Reserviert |
| $ | 36 | 24 | %24 |
Reserviert |
| % | 37 | 25 | %25 |
Sonderzeichen |
| & | 38 | 26 | %26 |
Reserviert |
| ' | 39 | 27 | %27 |
Reserviert |
| ( | 40 | 28 | %28 |
Reserviert |
| ) | 41 | 29 | %29 |
Reserviert |
| * | 42 | 2A | %2A |
Reserviert |
| + | 43 | 2B | %2B |
Reserviert |
| , | 44 | 2C | %2C |
Reserviert |
| - | 45 | 2D | %2D |
Nicht reserviert |
| . | 46 | 2E | %2E |
Nicht reserviert |
| / | 47 | 2F | %2F |
Reserviert |
| 0-9 | 48-57 | 30-39 | Nicht erforderlich | Nicht reserviert |
| : | 58 | 3A | %3A |
Reserviert |
| ; | 59 | 3B | %3B |
Reserviert |
| < | 60 | 3C | %3C |
Unsicher |
| = | 61 | 3D | %3D |
Reserviert |
| > | 62 | 3E | %3E |
Unsicher |
| ? | 63 | 3F | %3F |
Reserviert |
| @ | 64 | 40 | %40 |
Reserviert |
| A-Z | 65-90 | 41-5A | Nicht erforderlich | Nicht reserviert |
| [ | 91 | 5B | %5B |
Reserviert |
| \ | 92 | 5C | %5C |
Unsicher |
| ] | 93 | 5D | %5D |
Reserviert |
| ^ | 94 | 5E | %5E |
Unsicher |
| _ | 95 | 5F | %5F |
Nicht reserviert |
| ` | 96 | 60 | %60 |
Unsicher |
| a-z | 97-122 | 61-7A | Nicht erforderlich | Nicht reserviert |
| { | 123 | 7B | %7B |
Unsicher |
| | | 124 | 7C | %7C |
Unsicher |
| } | 125 | 7D | %7D |
Unsicher |
| ~ | 126 | 7E | %7E |
Nicht reserviert |
Gängige Unicode-Kodierungen
Unicode-Zeichen werden zunächst in ihre UTF-8-Bytefolge kodiert, anschließend wird jedes Byte einzeln prozentkodiert. Mehrbyte-Zeichen erzeugen mehrere prozentkodierte Tripletts.
| Zeichen | Beschreibung | UTF-8-Bytes | URL-kodiert |
|---|---|---|---|
| a mit Umlaut | Kleiner lateinischer Buchstabe A mit Trema | C3 A4 | %C3%A4 |
| n mit Tilde | Kleiner lateinischer Buchstabe N mit Tilde | C3 B1 | %C3%B1 |
| e mit Akut | Kleiner lateinischer Buchstabe E mit Akut | C3 A9 | %C3%A9 |
| u mit Umlaut | Kleiner lateinischer Buchstabe U mit Trema | C3 BC | %C3%BC |
| Euro-Zeichen | Euro-Zeichen | E2 82 AC | %E2%82%AC |
| Pfund-Zeichen | Pfund-Zeichen | C2 A3 | %C2%A3 |
| Yen-Zeichen | Yen-Zeichen | C2 A5 | %C2%A5 |
| CJK zhong | Vereinheitlichtes CJK-Ideogramm (Mitte) | E4 B8 AD | %E4%B8%AD |
| Kyrillisches Ja | Kyrillischer Großbuchstabe Ja | D0 AF | %D0%AF |
| Arabisches Ba | Arabischer Buchstabe Ba | D8 A8 | %D8%A8 |
Wie Mehrbyte-Zeichen kodiert werden
UTF-8 verwendet ein Kodierungsschema variabler Länge. Zeichen im ASCII-Bereich (0-127) benötigen ein Byte. Zeichen außerhalb dieses Bereichs benötigen zwei bis vier Bytes. Bei der Prozentkodierung wird jedes Byte der UTF-8-Darstellung zu einem eigenen %XX-Triplett.
Zwei-Byte-Zeichen (U+0080 bis U+07FF): Dazu gehören die meisten erweiterten lateinischen, griechischen, kyrillischen und arabischen Zeichen. Der deutsche Buchstabe scharfes s (U+00DF) etwa wird zu den UTF-8-Bytes C3 9F kodiert, die zu %C3%9F werden.
Drei-Byte-Zeichen (U+0800 bis U+FFFF): Dazu gehören CJK-Zeichen, die meisten Symbole und die Basic Multilingual Plane. Das japanische Hiragana-Zeichen (U+3042) etwa wird zu den UTF-8-Bytes E3 81 82 kodiert, die zu %E3%81%82 werden.
Vier-Byte-Zeichen (U+10000 bis U+10FFFF): Dazu gehören Emojis und ergänzende Zeichen. Das Emoji mit grinsendem Gesicht (U+1F600) etwa wird zu den UTF-8-Bytes F0 9F 98 80 kodiert, die zu %F0%9F%98%80 werden.
// JavaScript-Demonstration der Mehrbyte-Kodierung
console.log(encodeURIComponent('u with umlaut'));
// Zwei Bytes: "%C3%BC"
console.log(encodeURIComponent('CJK char'));
// Drei Bytes: "%E4%B8%AD"
console.log(encodeURIComponent('emoji'));
// Vier Bytes: "%F0%9F%98%80"
// Zur Überprüfung kannst du dekodieren
console.log(decodeURIComponent('%C3%BC')); // u mit Umlaut
console.log(decodeURIComponent('%E4%B8%AD')); // CJK-Zeichen