Codificare și decodare URL
Pregătiți textul ca să poată fi inclus în siguranță într-un URL sau transformați secvențele de tipul %20 înapoi în caractere lizibile. Instrumentul folosește funcțiile encodeURIComponent, encodeURI și decodeURIComponent ale browserului dumneavoastră, afișează parametrii query într-un tabel și nu trimite nimic către un server.
0 caractere · 0 cuvinte · 0 rânduri
0 caractere · 0 cuvinte · 0 rânduri
Funcționează integral în această filă a browserului. Textul dvs. nu este încărcat și nici stocat.
Ce escapează fiecare funcție
Calculat cu funcțiile browserului înseși. encodeURIComponent lasă neschimbate literele, cifrele și aceste semne: ! ' ( ) * - . _ ~
| Caracter | encodeURIComponent | encodeURI |
|---|---|---|
(spațiu) | %20 | %20 |
! | ! | ! |
" | %22 | %22 |
# | %23 | # |
$ | %24 | $ |
% | %25 | %25 |
& | %26 | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | %2B | + |
, | %2C | , |
/ | %2F | / |
: | %3A | : |
; | %3B | ; |
= | %3D | = |
? | %3F | ? |
@ | %40 | @ |
[ | %5B | %5B |
] | %5D | %5D |
{ | %7B | %7B |
} | %7D | %7D |
| | %7C | %7C |
\ | %5C | %5C |
^ | %5E | %5E |
` | %60 | %60 |
< | %3C | %3C |
> | %3E | %3E |
~ | ~ | ~ |
- | - | - |
_ | _ | _ |
. | . | . |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
Codificarea procent și caracterele rezervate din RFC 3986
Un URL poate conține doar un set limitat de caractere ASCII. RFC 3986, specificația din 2005 pentru sintaxa URI, le împarte în două grupuri. Caracterele nerezervate, A–Z, a–z, 0–9 și cele patru semne - . _ ~, nu trebuie niciodată codificate. Caracterele rezervate au roluri: delimitatorii generali : / ? # [ ] @ separă schema, gazda, calea, interogarea și fragmentul, iar subdelimitatorii ! $ & ' ( ) * + , ; = separă elementele din interiorul acestora, așa cum fac & și = într-un șir de interogare. Orice altceva, precum și orice caracter rezervat folosit ca simplă dată, trebuie codificat procentual.
Codificarea procentuală scrie un octet ca % urmat de două cifre hexazecimale. Textul este mai întâi convertit în UTF-8, deci un spațiu devine %20, un é (doi octeți) devine %C3%A9, iar un emoji devine patru grupuri %XX. De aceea o căutare după „café & bar” ajunge într-un link sub forma caf%C3%A9%20%26%20bar: caracterul & este codificat pentru ca serverul să nu îl interpreteze ca începutul unui parametru nou.
encodeURIComponent, encodeURI și decodarea
encodeURIComponent este alegerea potrivită pentru o singură bucată, de exemplu o valoare din interogare, un segment de cale sau un URL de redirecționare trimis ca parametru. Codifică tot, cu excepția caracterelor nerezervate și a ! ' ( ) *, pe care JavaScript le lasă neschimbate din motive istorice. encodeURI (URL complet) presupune că textul introdus este deja o adresă completă și păstrează intacte caracterele rezervate, așa că în https://example.com/a b?q=1 se codifică doar spațiul. Folosirea encodeURI pentru valoarea unui parametru este o greșeală clasică: un & sau # din valoare ar rămâne neschimbat și ar strica URL-ul.
Decodifică inversează oricare dintre cele două funcții. Formularele HTML trimise cu GET folosesc formatul mai vechi application/x-www-form-urlencoded, în care spațiul se scrie + în loc de %20; lăsați bifată opțiunea Tratează + ca spațiu pentru acestea și debifați-o când contează un semn plus literal, de exemplu într-un număr de telefon. Dacă textul conține un % care nu este urmat de două cifre hexazecimale sau octeți care nu sunt UTF-8 valid, decodificarea eșuează cu un mesaj clar, fără să ghicească. Când textul conține un șir de interogare, parametrii lui apar decodificați într-un tabel sub instrument. Pentru date binare în URL-uri, Base64url este alternativa obișnuită.
Întrebări frecvente
- Un spațiu dintr-un URL trebuie scris ca %20 sau ca semnul plus?
- În căi și conform RFC 3986, spațiul este %20. Forma + înseamnă spațiu doar în șirurile de interogare codificate așa cum codifică formularele HTML, deci %20 este alegerea sigură peste tot.
- De ce a apărut %2520 în URL-ul meu?
- A fost codificat de două ori. La prima trecere spațiul a devenit %20, iar la a doua însuși caracterul % a fost codificat ca %25. Decodificați o dată pentru a elimina stratul în plus și codificați valorile într-un singur loc din cod.
- Ce caractere nu trebuie niciodată codificate procent?
- Setul nerezervat din RFC 3986: literele de la A la Z, majuscule și minuscule, cifrele de la 0 la 9, precum și cratima, punctul, liniuța de subliniere și tilda.
- Poate un URL să conțină litere cu diacritice sau din alte alfabete fără codificare?
- Browserele le afișează, dar în rețea fiecare caracter non-ASCII dintr-o cale sau interogare este trimis ca UTF-8 codificat procentual. Numele de domeniu folosesc un sistem separat, Punycode, care le transformă în etichete xn--.
- De ce raportează decodarea o secvență invalidă?
- Textul conține un % care nu este urmat de două cifre hexazecimale, de exemplu un „100%” literal, sau octeții se decodifică în UTF-8 nevalid. Codificați semnele % izolate ca %25 înainte de decodificare.