Tabla completa de caracteres codificados en URL (ASCII + Unicode)
Tabla de referencia completa de caracteres codificados en URL. Cubre todos los caracteres ASCII imprimibles (32-126), los caracteres Unicode más habituales y sus equivalentes en percent-encoding según lo define el RFC 3986.
Caracteres de control y especiales de ASCII
Los caracteres ASCII en el rango 0-31 y el carácter 127 son caracteres de control. No son imprimibles y siempre deben codificarse mediante percent-encoding en las URL. Los caracteres de control que aparecen con más frecuencia en contextos de URL son el espacio (ASCII 32), el tabulador horizontal (ASCII 9) y los caracteres de nueva línea (ASCII 10 y 13).
Según el RFC 3986, cualquier octeto que no sea un carácter no reservado, un carácter reservado usado con su propósito reservado o un triplete percent-encoded debe codificarse mediante percent-encoding. En la práctica, esto significa que la mayoría de los caracteres no alfanuméricos deberían codificarse en los componentes de un URI.
| Carácter | Código ASCII | Codificado en URL | Descripción |
|---|---|---|---|
| (tab) | 9 | %09 |
Tabulador horizontal |
| (LF) | 10 | %0A |
Salto de línea |
| (CR) | 13 | %0D |
Retorno de carro |
| (espacio) | 32 | %20 |
Espacio |
Caracteres ASCII imprimibles
A continuación se muestra una referencia completa de todos los caracteres ASCII imprimibles (códigos 32-126) y sus formas codificadas en URL. Los caracteres marcados como "no reservados" en el RFC 3986 no requieren codificación. Los caracteres reservados deben codificarse cuando se usan fuera de su propósito reservado.
| Carácter | ASCII | Hex | Codificado en URL | Tipo |
|---|---|---|---|---|
| (espacio) | 32 | 20 | %20 |
Especial |
| ! | 33 | 21 | %21 |
Reservado |
| " | 34 | 22 | %22 |
Inseguro |
| # | 35 | 23 | %23 |
Reservado |
| $ | 36 | 24 | %24 |
Reservado |
| % | 37 | 25 | %25 |
Especial |
| & | 38 | 26 | %26 |
Reservado |
| ' | 39 | 27 | %27 |
Reservado |
| ( | 40 | 28 | %28 |
Reservado |
| ) | 41 | 29 | %29 |
Reservado |
| * | 42 | 2A | %2A |
Reservado |
| + | 43 | 2B | %2B |
Reservado |
| , | 44 | 2C | %2C |
Reservado |
| - | 45 | 2D | %2D |
No reservado |
| . | 46 | 2E | %2E |
No reservado |
| / | 47 | 2F | %2F |
Reservado |
| 0-9 | 48-57 | 30-39 | No requerido | No reservado |
| : | 58 | 3A | %3A |
Reservado |
| ; | 59 | 3B | %3B |
Reservado |
| < | 60 | 3C | %3C |
Inseguro |
| = | 61 | 3D | %3D |
Reservado |
| > | 62 | 3E | %3E |
Inseguro |
| ? | 63 | 3F | %3F |
Reservado |
| @ | 64 | 40 | %40 |
Reservado |
| A-Z | 65-90 | 41-5A | No requerido | No reservado |
| [ | 91 | 5B | %5B |
Reservado |
| \ | 92 | 5C | %5C |
Inseguro |
| ] | 93 | 5D | %5D |
Reservado |
| ^ | 94 | 5E | %5E |
Inseguro |
| _ | 95 | 5F | %5F |
No reservado |
| ` | 96 | 60 | %60 |
Inseguro |
| a-z | 97-122 | 61-7A | No requerido | No reservado |
| { | 123 | 7B | %7B |
Inseguro |
| | | 124 | 7C | %7C |
Inseguro |
| } | 125 | 7D | %7D |
Inseguro |
| ~ | 126 | 7E | %7E |
No reservado |
Codificaciones Unicode habituales
Los caracteres Unicode se codifican primero en su secuencia de bytes UTF-8 y, a continuación, cada byte se codifica individualmente mediante percent-encoding. Los caracteres multibyte producen varios tripletes percent-encoded.
| Carácter | Descripción | Bytes UTF-8 | Codificado en URL |
|---|---|---|---|
| a con diéresis | Letra latina minúscula A con diéresis | C3 A4 | %C3%A4 |
| n con tilde | Letra latina minúscula N con tilde | C3 B1 | %C3%B1 |
| e con acento agudo | Letra latina minúscula E con acento agudo | C3 A9 | %C3%A9 |
| u con diéresis | Letra latina minúscula U con diéresis | C3 BC | %C3%BC |
| Signo de euro | Signo de euro | E2 82 AC | %E2%82%AC |
| Signo de libra | Signo de libra | C2 A3 | %C2%A3 |
| Signo de yen | Signo de yen | C2 A5 | %C2%A5 |
| CJK zhong | Ideograma unificado CJK (medio) | E4 B8 AD | %E4%B8%AD |
| Ya cirílica | Letra cirílica mayúscula Ya | D0 AF | %D0%AF |
| Ba árabe | Letra árabe Ba | D8 A8 | %D8%A8 |
Cómo se codifican los caracteres multibyte
UTF-8 utiliza un esquema de codificación de longitud variable. Los caracteres en el rango ASCII (0-127) usan un byte. Los caracteres fuera de este rango usan de dos a cuatro bytes. Al aplicar percent-encoding, cada byte de la representación UTF-8 se convierte en un triplete %XX independiente.
Caracteres de dos bytes (U+0080 a U+07FF): Incluyen la mayoría de los caracteres latinos extendidos, griegos, cirílicos y árabes. Por ejemplo, la letra alemana ese sostenida (U+00DF) se codifica en los bytes UTF-8 C3 9F, que se convierten en %C3%9F.
Caracteres de tres bytes (U+0800 a U+FFFF): Incluyen los caracteres CJK, la mayoría de los símbolos y el Plano Multilingüe Básico. Por ejemplo, el carácter hiragana japonés (U+3042) se codifica en los bytes UTF-8 E3 81 82, que se convierten en %E3%81%82.
Caracteres de cuatro bytes (U+10000 a U+10FFFF): Incluyen los emojis y los caracteres suplementarios. Por ejemplo, el emoji de cara sonriente (U+1F600) se codifica en los bytes UTF-8 F0 9F 98 80, que se convierten en %F0%9F%98%80.
// Demostración en JavaScript de la codificación multibyte
console.log(encodeURIComponent('u with umlaut'));
// Dos bytes: "%C3%BC"
console.log(encodeURIComponent('CJK char'));
// Tres bytes: "%E4%B8%AD"
console.log(encodeURIComponent('emoji'));
// Cuatro bytes: "%F0%9F%98%80"
// Puedes verificarlo decodificando
console.log(decodeURIComponent('%C3%BC')); // u con diéresis
console.log(decodeURIComponent('%E4%B8%AD')); // carácter CJK