Tabela Completa de Caracteres Codificados em URL (ASCII + Unicode)
Tabela de referência completa dos caracteres codificados em URL. Cobre todos os caracteres ASCII imprimíveis (32-126), caracteres Unicode comuns e seus equivalentes em percent-encoding conforme definido pela RFC 3986.
Caracteres de Controle e Especiais ASCII
Os caracteres ASCII no intervalo de 0 a 31 e o caractere 127 são caracteres de controle. Eles não são imprimíveis e devem sempre ser codificados em percent-encoding nas URLs. Os caracteres de controle mais frequentemente encontrados em contextos de URL são o espaço (ASCII 32), a tabulação horizontal (ASCII 9) e os caracteres de nova linha (ASCII 10 e 13).
De acordo com a RFC 3986, qualquer octeto que não seja um caractere não reservado, um caractere reservado usado para sua finalidade reservada ou um tripleto em percent-encoding deve ser codificado em percent-encoding. Na prática, isso significa que a maioria dos caracteres não alfanuméricos deve ser codificada nos componentes de uma URI.
| Caractere | Código ASCII | Codificado em URL | Descrição |
|---|---|---|---|
| (tab) | 9 | %09 |
Tabulação Horizontal |
| (LF) | 10 | %0A |
Avanço de Linha |
| (CR) | 13 | %0D |
Retorno de Carro |
| (espaço) | 32 | %20 |
Espaço |
Caracteres ASCII Imprimíveis
Abaixo está uma referência completa de todos os caracteres ASCII imprimíveis (códigos 32-126) e suas formas codificadas em URL. Os caracteres marcados como "não reservados" na RFC 3986 não exigem codificação. Os caracteres reservados devem ser codificados quando usados fora de sua finalidade reservada.
| Caractere | ASCII | Hex | Codificado em URL | Tipo |
|---|---|---|---|---|
| (espaço) | 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 |
Não reservado |
| . | 46 | 2E | %2E |
Não reservado |
| / | 47 | 2F | %2F |
Reservado |
| 0-9 | 48-57 | 30-39 | Não necessário | Não 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 | Não necessário | Não reservado |
| [ | 91 | 5B | %5B |
Reservado |
| \ | 92 | 5C | %5C |
Inseguro |
| ] | 93 | 5D | %5D |
Reservado |
| ^ | 94 | 5E | %5E |
Inseguro |
| _ | 95 | 5F | %5F |
Não reservado |
| ` | 96 | 60 | %60 |
Inseguro |
| a-z | 97-122 | 61-7A | Não necessário | Não reservado |
| { | 123 | 7B | %7B |
Inseguro |
| | | 124 | 7C | %7C |
Inseguro |
| } | 125 | 7D | %7D |
Inseguro |
| ~ | 126 | 7E | %7E |
Não reservado |
Codificações Unicode Comuns
Os caracteres Unicode são primeiro codificados em sua sequência de bytes UTF-8 e, em seguida, cada byte é individualmente codificado em percent-encoding. Caracteres de múltiplos bytes produzem vários tripletos em percent-encoding.
| Caractere | Descrição | Bytes UTF-8 | Codificado em URL |
|---|---|---|---|
| a com trema | Letra Latina Minúscula A com Trema | C3 A4 | %C3%A4 |
| n com til | Letra Latina Minúscula N com Til | C3 B1 | %C3%B1 |
| e com acento agudo | Letra Latina Minúscula E com Acento Agudo | C3 A9 | %C3%A9 |
| u com trema | Letra Latina Minúscula U com Trema | C3 BC | %C3%BC |
| Símbolo do euro | Símbolo do Euro | E2 82 AC | %E2%82%AC |
| Símbolo da libra | Símbolo da Libra | C2 A3 | %C2%A3 |
| Símbolo do iene | Símbolo do Iene | C2 A5 | %C2%A5 |
| CJK zhong | Ideograma Unificado CJK (meio) | E4 B8 AD | %E4%B8%AD |
| Ya cirílico | Letra Cirílica Maiúscula Ya | D0 AF | %D0%AF |
| Ba árabe | Letra Árabe Ba | D8 A8 | %D8%A8 |
Como os Caracteres de Múltiplos Bytes São Codificados
O UTF-8 usa um esquema de codificação de comprimento variável. Os caracteres no intervalo ASCII (0-127) usam um byte. Os caracteres fora desse intervalo usam de dois a quatro bytes. Ao aplicar o percent-encoding, cada byte da representação UTF-8 torna-se um tripleto %XX separado.
Caracteres de dois bytes (U+0080 a U+07FF): incluem a maioria dos caracteres do Latin estendido, do grego, do cirílico e do árabe. Por exemplo, a letra alemã ß (U+00DF) é codificada nos bytes UTF-8 C3 9F, que se tornam %C3%9F.
Caracteres de três bytes (U+0800 a U+FFFF): incluem os caracteres CJK, a maioria dos símbolos e o Plano Multilíngue Básico. Por exemplo, o caractere japonês hiragana (U+3042) é codificado nos bytes UTF-8 E3 81 82, que se tornam %E3%81%82.
Caracteres de quatro bytes (U+10000 a U+10FFFF): incluem emojis e caracteres suplementares. Por exemplo, o emoji de rosto sorridente (U+1F600) é codificado nos bytes UTF-8 F0 9F 98 80, que se tornam %F0%9F%98%80.
// Demonstração em JavaScript da codificação de múltiplos bytes
console.log(encodeURIComponent('u com trema'));
// Dois bytes: "%C3%BC"
console.log(encodeURIComponent('caractere CJK'));
// Três bytes: "%E4%B8%AD"
console.log(encodeURIComponent('emoji'));
// Quatro bytes: "%F0%9F%98%80"
// Você pode verificar decodificando
console.log(decodeURIComponent('%C3%BC')); // u com trema
console.log(decodeURIComponent('%E4%B8%AD')); // caractere CJK