Table complète des caractères encodés en URL (ASCII + Unicode)
Table de référence complète des caractères encodés en URL. Elle couvre tous les caractères ASCII imprimables (32-126), les caractères Unicode courants et leurs équivalents en encodage pourcent tels que définis par la RFC 3986.
Caractères de contrôle et caractères spéciaux ASCII
Les caractères ASCII compris dans la plage 0-31 ainsi que le caractère 127 sont des caractères de contrôle. Ils ne sont pas imprimables et doivent toujours être encodés en pourcent dans les URL. Les caractères de contrôle les plus fréquemment rencontrés dans un contexte d'URL sont l'espace (ASCII 32), la tabulation horizontale (ASCII 9) et les caractères de saut de ligne (ASCII 10 et 13).
Selon la RFC 3986, tout octet qui n'est pas un caractère non réservé, un caractère réservé utilisé à sa fin réservée, ou un triplet encodé en pourcent doit être encodé en pourcent. En pratique, cela signifie que la plupart des caractères non alphanumériques doivent être encodés dans les composants d'une URI.
| Caractère | Code ASCII | Encodage URL | Description |
|---|---|---|---|
| (tab) | 9 | %09 |
Tabulation horizontale |
| (LF) | 10 | %0A |
Saut de ligne (Line Feed) |
| (CR) | 13 | %0D |
Retour chariot (Carriage Return) |
| (espace) | 32 | %20 |
Espace |
Caractères ASCII imprimables
Vous trouverez ci-dessous une référence complète de tous les caractères ASCII imprimables (codes 32-126) et de leurs formes encodées en URL. Les caractères marqués comme « non réservés » dans la RFC 3986 ne nécessitent aucun encodage. Les caractères réservés doivent être encodés lorsqu'ils sont utilisés en dehors de leur fin réservée.
| Caractère | ASCII | Hex | Encodage URL | Type |
|---|---|---|---|---|
| (espace) | 32 | 20 | %20 |
Spécial |
| ! | 33 | 21 | %21 |
Réservé |
| " | 34 | 22 | %22 |
Non sûr |
| # | 35 | 23 | %23 |
Réservé |
| $ | 36 | 24 | %24 |
Réservé |
| % | 37 | 25 | %25 |
Spécial |
| & | 38 | 26 | %26 |
Réservé |
| ' | 39 | 27 | %27 |
Réservé |
| ( | 40 | 28 | %28 |
Réservé |
| ) | 41 | 29 | %29 |
Réservé |
| * | 42 | 2A | %2A |
Réservé |
| + | 43 | 2B | %2B |
Réservé |
| , | 44 | 2C | %2C |
Réservé |
| - | 45 | 2D | %2D |
Non réservé |
| . | 46 | 2E | %2E |
Non réservé |
| / | 47 | 2F | %2F |
Réservé |
| 0-9 | 48-57 | 30-39 | Non requis | Non réservé |
| : | 58 | 3A | %3A |
Réservé |
| ; | 59 | 3B | %3B |
Réservé |
| < | 60 | 3C | %3C |
Non sûr |
| = | 61 | 3D | %3D |
Réservé |
| > | 62 | 3E | %3E |
Non sûr |
| ? | 63 | 3F | %3F |
Réservé |
| @ | 64 | 40 | %40 |
Réservé |
| A-Z | 65-90 | 41-5A | Non requis | Non réservé |
| [ | 91 | 5B | %5B |
Réservé |
| \ | 92 | 5C | %5C |
Non sûr |
| ] | 93 | 5D | %5D |
Réservé |
| ^ | 94 | 5E | %5E |
Non sûr |
| _ | 95 | 5F | %5F |
Non réservé |
| ` | 96 | 60 | %60 |
Non sûr |
| a-z | 97-122 | 61-7A | Non requis | Non réservé |
| { | 123 | 7B | %7B |
Non sûr |
| | | 124 | 7C | %7C |
Non sûr |
| } | 125 | 7D | %7D |
Non sûr |
| ~ | 126 | 7E | %7E |
Non réservé |
Encodages Unicode courants
Les caractères Unicode sont d'abord convertis en leur séquence d'octets UTF-8, puis chaque octet est encodé individuellement en pourcent. Les caractères multi-octets produisent plusieurs triplets encodés en pourcent.
| Caractère | Description | Octets UTF-8 | Encodage URL |
|---|---|---|---|
| a tréma | Lettre minuscule latine A tréma | C3 A4 | %C3%A4 |
| n tilde | Lettre minuscule latine N tilde | C3 B1 | %C3%B1 |
| e accent aigu | Lettre minuscule latine E accent aigu | C3 A9 | %C3%A9 |
| u tréma | Lettre minuscule latine U tréma | C3 BC | %C3%BC |
| Symbole euro | Symbole euro | E2 82 AC | %E2%82%AC |
| Symbole livre | Symbole livre sterling | C2 A3 | %C2%A3 |
| Symbole yen | Symbole yen | C2 A5 | %C2%A5 |
| Idéogramme CJK zhong | Idéogramme unifié CJK (milieu) | E4 B8 AD | %E4%B8%AD |
| Ya cyrillique | Lettre majuscule cyrillique Ya | D0 AF | %D0%AF |
| Ba arabe | Lettre arabe Ba | D8 A8 | %D8%A8 |
Comment les caractères multi-octets sont encodés
UTF-8 utilise un schéma d'encodage à longueur variable. Les caractères de la plage ASCII (0-127) utilisent un seul octet. Les caractères en dehors de cette plage utilisent de deux à quatre octets. Lors de l'encodage en pourcent, chaque octet de la représentation UTF-8 devient un triplet %XX distinct.
Caractères sur deux octets (U+0080 à U+07FF) : ils incluent la plupart des caractères latins étendus, grecs, cyrilliques et arabes. Par exemple, la lettre allemande s dur (U+00DF) s'encode en octets UTF-8 C3 9F, ce qui donne %C3%9F.
Caractères sur trois octets (U+0800 à U+FFFF) : ils incluent les caractères CJK, la plupart des symboles et le plan multilingue de base (Basic Multilingual Plane). Par exemple, le caractère hiragana japonais (U+3042) s'encode en octets UTF-8 E3 81 82, ce qui donne %E3%81%82.
Caractères sur quatre octets (U+10000 à U+10FFFF) : ils incluent les emojis et les caractères supplémentaires. Par exemple, l'emoji visage souriant (U+1F600) s'encode en octets UTF-8 F0 9F 98 80, ce qui donne %F0%9F%98%80.
// Démonstration en JavaScript de l'encodage multi-octets
console.log(encodeURIComponent('u with umlaut'));
// Deux octets : "%C3%BC"
console.log(encodeURIComponent('CJK char'));
// Trois octets : "%E4%B8%AD"
console.log(encodeURIComponent('emoji'));
// Quatre octets : "%F0%9F%98%80"
// Vous pouvez vérifier en décodant
console.log(decodeURIComponent('%C3%BC')); // u tréma
console.log(decodeURIComponent('%E4%B8%AD')); // caractère CJK