Referencia8 min de lectura

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

Artículos relacionados

Prueba nuestras herramientas gratuitas