Sari la conținut

Codificator URL: Scapă de Caracterele Speciale din URL Online Gratuit

Instrument gratuit de escapare a șirurilor URL pentru a codifica instantaneu caracterele speciale. Convertește spații, Unicode și simboluri în format percent-encoded. Perfect pentru API-uri, formulare web și URL-uri internaționale. Încearcă acum!

Escapator de Șiruri URL

Calculator de încărcare...
📚

Documentație

Codificarea URL-urilor: ce este și cum funcționează

Codificarea URL-urilor, numită și codificare procentuală, este o metodă de reprezentare a caracterelor într-o adresă web folosind doar un set restrâns de caractere ASCII sigure. Funcționează prin înlocuirea unui caracter nesigur cu un semn % urmat de două cifre hexazecimale. Acest instrument de escapare a șirurilor URL codifică textul în același mod ca funcția încorporată în JavaScript encodeURIComponent.

De ce trebuie codificate URL-urile

Un URL poate conține doar un set limitat de caractere: litere, cifre și câteva semne de punctuație. Spațiile, literele cu diacritice, caracterele din alfabete nonlatine și simboluri precum & sau = pot deteriora un URL sau îi pot schimba sensul dacă apar în formă necodată. De exemplu, un spațiu dintr-un link poate determina browserul sau serverul să citească URL-ul ca pe două fragmente separate. Codificarea procentuală înlocuiește aceste caractere cu un cod pe care toate browserele și serverele îl pot interpreta în același fel.

Caracterele pe care acest instrument le lasă neschimbate

Acest instrument nu modifică niciodată următoarele caractere. Acestea sunt transmise direct:

  • Litere mari și mici: A–Z, a–z
  • Cifre: 0–9
  • Semnele de punctuație - . _ ~ ! * ' ( )

Orice alt caracter este codificat procentual, inclusiv:

  • Caracterul spațiu și semne de punctuație precum : / ? # [ ] @ $ & + , ; =
  • Literele cu diacritice și orice alt caracter non-ASCII sau Unicode
  • Chiar și un caracter literal %, care devine întotdeauna %25, chiar dacă făcea deja parte dintr-o secvență codificată procentual

Unele ghiduri generale despre sintaxa URL grupează ! * ' ( și ) împreună cu alte semne de punctuație ca fiind caractere care „pot necesita codificare” în anumite contexte. Acest instrument nu le codifică, deoarece urmează setul de reguli encodeURIComponent, în care acestea sunt tratate ca sigure.

Cum se calculează un șir codificat procentual (formula)

Instrumentul verifică fiecare caracter al intrării, unul câte unul, și aplică următoarea regulă:

  1. Dacă acel caracter face parte din lista de caractere neschimbate de mai sus, păstrează-l ca atare.
  2. În caz contrar, convertește caracterul în secvența de octeți UTF-8. Literele latine cu diacritice, literele grecești, chirilice și arabe folosesc doi octeți. Caracterele chinezești, japoneze și coreene folosesc trei. Emoji folosesc patru.
  3. Scrie fiecare octet ca număr hexazecimal format din două cifre.
  4. Pune un % înaintea fiecărei perechi hexazecimale.
  5. Unește rezultatele în ordine pentru a forma șirul codificat.

Exemplu de calcul

Intrare: Jürgen & Björk

Parcurgerea caracter cu caracter:

CaracterRezultat
JJ (neschimbat)
ü%C3%BC (octeți UTF-8 0xC3, 0xBC)
rgenrgen (neschimbat)
(spațiu)%20
&%26
(spațiu)%20
BjBj (neschimbat)
ö%C3%B6 (octeți UTF-8 0xC3, 0xB6)
rkrk (neschimbat)

Rezultat: J%C3%BCrgen%20%26%20Bj%C3%B6rk

Un al doilea exemplu arată cum funcționează setul de caractere neschimbate. Codificarea șirului -_.!~*'() produce -_.!~*'(), exact același text, deoarece fiecare caracter aparține setului de caractere ne rezervate. Codificarea șirului 100% produce 100%25, deoarece semnul % în sine nu este un caracter sigur.

Decodificarea unui șir codificat procentual

Decodificarea inversează procesul: fiecare secvență %XX este citită ca un octet hexazecimal, octeții sunt grupați din nou în caracterul UTF-8 original, iar caracterul înlocuiește secvența. De exemplu, %C3%BC este decodificat înapoi în ü, iar %20 este decodificat ca un spațiu. Acest instrument doar codifică; pentru inversarea procesului este necesar un decodor separat.

Utilizări frecvente

Codificarea procentuală este folosită ori de câte ori textul introdus de o persoană, nu textul scris de un programator, trebuie să devină parte a unui URL:

  • Casete de căutare care introduc termenul căutat în bara de adrese, precum ?q=shoes%20%26%20bags
  • Parametri de interogare care transportă nume, adrese sau alte date furnizate de utilizator
  • Linkuri către pagini cu titluri în limbi care folosesc litere cu diacritice sau sisteme de scriere nonlatine
  • Solicitări API care transmit tokenuri sau identificatori ca parte a URL-ului

Exemple de cod

1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
4

Funcția Python quote lasă întotdeauna neschimbate literele, cifrele și - . _ ~. Cele cinci caractere suplimentare ! * ' ( ) trebuie enumerate în safe pentru a corespunde acestui instrument. Fără acestea, quote returnează %21 %2A %27 %28 %29.

Istoric

Ideea codificării caracterelor nesigure într-un URL datează de la RFC 1738 din (4.410 cm) 1994, unul dintre primele documente care au definit formatul URL. RFC 3986, publicat în 2005, a actualizat regulile și a definit oficial setul de caractere „ne rezervate” care nu necesită niciodată codificare. encodeURIComponent, funcția JavaScript pe care se bazează acest instrument, urmează un set de caractere ne rezervate puțin mai larg decât RFC 3986: lasă de asemenea necodificate caracterele ! * ' ( și ), conform unei versiuni anterioare a specificației URI.

Întrebări frecvente

Care este diferența dintre codificarea URL și escaparea URL? Sunt același lucru. Ambii termeni descriu codificarea procentuală, în care un caracter este înlocuit cu % urmat de două cifre hexazecimale.

De ce rămân neschimbate !, *, ', ( și ) în acest instrument? Acest instrument folosește encodeURIComponent, care tratează aceste cinci caractere ca fiind sigure și le lasă exact așa cum au fost introduse. Alte funcții de codificare și unele servere pot solicita totuși codificarea lor, așadar trebuie verificat sistemul de destinație dacă apare o problemă.

Care este diferența dintre %20 și + pentru reprezentarea unui spațiu? Ambele reprezintă un spațiu. %20 este codificarea procentuală generală pentru un spațiu. Semnul + este un caz special folosit doar în datele application/x-www-form-urlencoded, formatul utilizat la trimiterea formularelor HTML, nu de acest instrument.

Decodifică acest instrument textul deja codificat? Nu. Instrumentul doar codifică. Dacă intrarea conține deja un semn %, acel % este tratat ca un caracter literal și devine %25 în rezultat, în loc să fie lăsat neschimbat.

Cum sunt tratate caracterele nonlatine, precum textul chinezesc sau arab? Fiecare caracter este mai întâi convertit în secvența sa de octeți UTF-8, apoi fiecare octet este codificat procentual. Un caracter chinezesc folosește trei octeți, astfel că produce trei grupuri %XX. O literă arabă folosește doi octeți, astfel că produce două.

Când refuză instrumentul să codifice textul? Doar atunci când textul conține jumătate dintr-o pereche de surogate. O pereche de surogate este codul format din două părți care stochează un caracter deasupra U+FFFF, precum un emoji. O jumătate izolată nu are o reprezentare UTF-8 validă, astfel că instrumentul afișează o eroare în locul rezultatului. Tastarea obișnuită nu poate produce un astfel de caracter; acesta provine de obicei dintr-o copiere trunchiată sau dintr-un link deteriorat.

Ar trebui codificat un URL întreg sau doar o parte a acestuia? Trebuie codificate doar părțile care conțin date furnizate de utilizator, precum valorile parametrilor de interogare sau segmentele de cale, nu părțile care formează structura URL-ului, precum https:// și numele domeniului. Codificarea unui URL întreg cu un codificator pentru componente ar transforma, de asemenea, caracterele :, / și ? în coduri procentuale, deteriorând adresa.

Referințe

  1. RFC 3986 — Identificator uniform de resurse (URI): sintaxă generică
  2. Codificarea procentuală — Wikipedia
  3. MDN — encodeURIComponent()
  4. Standardul URL — WHATWG