Utilia

Codificare și decodare URL

Codificare și decodare URL gratuită. Codifică procentual parametri sau URL-uri complete, decodează secvențe %XX și tratează + ca spațiu, în browserul tău.

Mod

Cum folosești codificarea și decodarea URL

  1. Alege Codifică ca să transformi textul într-o formă sigură pentru URL sau Decodează ca să readuci textul codificat procentual în caractere lizibile.
  2. La codificare, alege un Mod: Componentă pentru o singură valoare (de exemplu un parametru de interogare sau un segment de cale) sau URL complet pentru a codifica o adresă întreagă păstrându-i structura intactă.
  3. La decodarea datelor care provin dintr-un formular HTML sau dintr-un șir de interogare, activează Tratează + ca spațiu, ca semnele + să devină spații.
  4. Lipește textul și copiază rezultatul. Dacă o secvență procentuală este malformată, instrumentul raportează o eroare în loc să ghicească.

Ce este codificarea URL?

Un URL poate conține doar un set limitat de caractere ASCII. Unele caractere, precum /, ?, #, & și =, sunt rezervate, pentru că separă părțile unei adrese: calea, șirul de interogare și fragmentul. Altele, precum spațiile, ghilimelele, literele cu diacritice sau emoji, pur și simplu nu sunt permise. Codificarea URL, numită și codificare procentuală, rezolvă ambele probleme înlocuind fiecare octet problematic cu un % urmat de două cifre hexazecimale.

Textul este mai întâi convertit în octeți UTF-8, iar fiecare octet este codificat separat. Un spațiu devine %20, un „și” comercial devine %26, é (doi octeți în UTF-8) devine %C3%A9, iar emoji-ul 😀 (patru octeți) devine %F0%9F%98%80. Caracterele nerezervate, adică literele, cifrele și - _ . ~, nu au nevoie niciodată de codificare. Literele românești cu diacritice, precum ă, â, î, ș sau ț, sunt codificate ca octeți UTF-8, de exemplu ș devine %C8%99.

Modul Componentă sau modul URL complet

Alegerea modului potrivit este cea mai importantă decizie, iar o greșeală aici este o sursă clasică de erori.

Modul Componentă funcționează ca encodeURIComponent din JavaScript. Codifică fiecare caracter rezervat, deci rezultatul poate fi plasat în siguranță în interiorul unei părți dintr-un URL. Folosește-l pentru valori de parametri de interogare, segmente de cale sau orice a tastat un utilizator. De exemplu, termenul de căutare rock & roll devine rock%20%26%20roll. Dacă nu ai codifica &, serverul ar citi roll ca începutul unui parametru nou.

Modul URL complet funcționează ca encodeURI. Presupune că intrarea este deja o adresă completă și păstrează caracterele care îi dau structura, precum : / ? # & și =, codificând spațiile și caracterele non-ASCII. Folosește-l ca să curățești o adresă precum https://example.com/meniu cafea?q=ceai în https://example.com/meniu%20cafea?q=ceai. Nu-l folosi pe valori individuale: un & din interiorul unei valori ar rămâne necodificat și ar strica șirul de interogare.

O regulă bună: construiește URL-urile din părți, codifică fiecare valoare în modul Componentă și folosește modul URL complet doar pentru adrese primite deja asamblate.

Semnul + și codificarea de formular

Formularele HTML trimise cu application/x-www-form-urlencoded codifică spațiile ca + în loc de %20. De aceea, adresele de căutare arată adesea ca ?q=hello+world. Decodarea procentuală standard lasă + neschimbat, pentru că într-o cale un plus este doar un plus. Când decodezi un șir de interogare sau date de formular, activează Tratează + ca spațiu ca să obții hello world. Lasă-l dezactivat pentru căi și pentru valori în care un + literal contează, precum numerele de telefon sau datele Base64. Un semn plus real din datele de formular este trimis ca %2B, deci este decodat corect în ambele cazuri.

Confidențialitate

Codificarea și decodarea rulează integral în browserul tău. Nimic din ce lipești, inclusiv URL-uri care pot conține token-uri, ID-uri de sesiune sau date personale, nu este trimis unui server și nici stocat.

Întrebări frecvente

De ce eșuează decodarea cu o eroare „malformată”?

Un % trebuie urmat de exact două cifre hexazecimale, iar octeții rezultați trebuie să formeze UTF-8 valid. Șiruri precum 100%, %G1 sau o secvență trunchiată precum %E2%82 nu pot fi decodate în mod fiabil, așa că instrumentul raportează problema în loc să producă text incorect. Ca să incluzi un semn procent literal, codifică-l ca %25.

Care este diferența dintre %20 și +?

Amândouă pot reprezenta un spațiu, dar în contexte diferite. %20 este valid peste tot într-un URL. + înseamnă spațiu doar în șiruri de interogare codificate ca formular; în rest este un semn plus literal.

Ar trebui să codific un URL întreg în modul Componentă?

Doar dacă întregul URL este el însuși o valoare în interiorul altui URL, de exemplu un parametru redirect=. În acel caz, modul Componentă este exact potrivit: https://a.com/?x=1 devine https%3A%2F%2Fa.com%2F%3Fx%3D1.

De ce este textul meu codificat de două ori?

Codificarea dublă apare când text deja codificat este codificat din nou, transformând %20 în %2520. Decodează o dată ca să verifici și asigură-te că fiecare valoare este codificată doar în momentul în care este inserată în URL.

Ascunde sau protejează codificarea URL datele?

Nu. Codificarea procentuală este complet reversibilă și nu oferă securitate. Valorile sensibile din URL-uri pot ajunge în istoricul browserului și în jurnalele serverului, deci evită să pui secrete în URL-uri.