Codificarea procentuală în URL: ce înseamnă cu adevărat %20, + și %2F
Codificarea procentuală scrie un caracter pe care un URL nu-l poate transporta în siguranță ca semnul procentului urmat de valoarea lui în hexazecimal. Un spațiu devine %20, un ampersand devine %26, iar o bară oblică devine %2F. Codificarea protejează structura unui link, pentru că prin caractere precum & și = se despart părțile unui șir de interogare.
Ce caractere pot rămâne neschimbate
Standardul URI (RFC 3986), pe care se construiesc adresele URL, lasă neschimbate câteva caractere: literele de la A la Z și de la a la z, cifrele și cele patru semne - _ . ~. Acestea nu au nevoie niciodată de codificare. Celelalte caractere au un rol într-un URL. Două puncte separă schema de restul adresei, bara oblică separă părțile căii, semnul întrebării începe șirul de interogare, dieza începe un fragment, iar & și = împart interogarea în nume și valori. Un caracter cu rol trebuie codificat atunci când îl folosești ca date, nu ca structură.
De aceea același caracter poate fi codificat într-un loc și nu în altul. Într-o valoare de interogare, ampersandul trebuie să fie %26, altfel linkul se taie în alt loc. În calea unui link, el este doar un caracter obișnuit.
Litere care nu sunt din engleză
Literele din afara alfabetului englez se codifică prin octeții lor UTF-8, iar fiecare octet se scrie ca un cod procentual. Litera é din café are doi octeți, C3 și A9, deci devine %C3%A9, iar întregul cuvânt devine caf%C3%A9.
Un exemplu simplu clarifică regulile. Textul a b&c=d/é, codificat ca componentă, devine a%20b%26c%3Dd%2F%C3%A9. Orice caracter care nu este literă sigură, cifră sau semn de punctuație sigur este codificat: spațiul, ampersandul, egalul, bara oblică și litera cu diacritice.
Componentă sau URL întreg
Există două tipuri de codificare, și fiecare are rostul ei. Codificarea de tip componentă tratează fiecare caracter rezervat ca pe un dat. Folosește-o pentru o singură valoare, de exemplu un termen de căutare sau un nume de fișier dintr-un link. Dacă codifici „rock & roll” ca termen de căutare, obții rock%20%26%20roll, deci ampersandul rămâne în interiorul valorii.
Codificarea URL întreg păstrează structura. Dacă o aplici lui https://example.com/a b, obții https://example.com/a%20b, iar barele oblice și due-ul rămân neatinse. Folosește-o pentru o adresă completă care trebuie făcută validă, nu pentru o valoare care intră într-un link.
Instrumentul de codificare URL are pentru asta setările Componentă și URL complet. Decodarea în modul URL complet păstrează și caracterele de structură scăpate, precum %26 și %3D, astfel încât linkul continuă să funcționeze după decodare.
Semnele plus și datele din formular
Formularele web folosesc o altă convenție. Când un formular este trimis ca date de formular, spațiul se scrie ca +, nu ca %20. Un semn plus literal se scrie atunci %2B. Așadar, expresia C++ tips devine C%2B%2B+tips în datele de formular și C%2B%2B%20tips într-o codificare simplă de componentă.
Decodarea urmează aceeași diferență. Într-un șir de interogare, + înseamnă de obicei spațiu. În calea unui link, + este un semn plus. Instrumentul citește + ca spațiu doar dacă este bifată opțiunea Folosește + pentru spații (date de formular), așa că las-o nebifată pentru căi și pentru valorile în care semnul plus este real.
Cum citești un șir de interogare lung
Un link îșl poartă adesea setările după semnul întrebării. Ia acest exemplu:
https://shop.example/search?q=red%20shirt&size=M&tag=summer%2Bsale
Decodat, înseamnă că se caută red shirt, mărimea este M, iar eticheta este summer+sale. %2B rămâne semn plus, pentru că a fost codificat ca atare. Lipește linkul în Instrumentul de codificare URL și el listează fiecare nume și valoare după decodare, ceea ce face un link lung ușor de citit. Dacă vrei doar adresa mai scurtă, fără setările de urmărire, curăță linkul mai întâi.
Codificarea dublă
Cea mai frecventă greșeală este codificarea de două ori a aceleiași valori. Dacă recodifici textul %20, obții %2520, pentru că însuși semnul procentului se codifică drept %25. Pagina caută apoi un %20 literal în valoare, iar căutarea sau pagina nu se potrivește. Decodează linkul o singură dată, verifică rezultatul și codifică o valoare doar când ai nevoie.
Secvențe de escape stricate
Un semn procentual trebuie urmat de două cifre hexazecimale, iar cifrele trebuie să formeze UTF-8 valid pentru literele cu diacritice. Un link tăiat sau un semn procentual greșit tastat într-un text poate lăsa o secvență stricată, precum %E0%A4%A. Instrumentul decodează ce poate, lasă octeții stricați exact cum sunt scriși și îți spune câți nu a putut decoda. Nu se oprește la prima eroare.
Cazuri speciale
- Spații într-un link tastat de mână. Bara de adrese a browserului codifică spațiile în locul tău, dar un link copiat într-un document poate conține încă spații brute. Codifică-le înainte să trimiți mai departe linkul.
- Nume de domeniu non-englezești. Acestea folosesc un sistem separat, punycode, iar codificarea căii sau a interogării nu schimbă numele gazdei.
- Jumătate dintr-un emoji. O copie defectă poate lăsa o singură jumătate de surogat, care nu poate fi codificată. Instrumentul o înlocuiește cu simbolul de înlocuire și te anunță că a făcut asta.
- Base64 în linkuri. O valoare Base64 dintr-un link urmează propriile reguli, cu - și _ în locul lui + și /. Vezi Base64 explicat.
Cum faci asta cu fixmint
- Lipește textul sau linkul în câmpul Text sau URL.
- Alege Codifică sau Decodifică, apoi Componentă pentru o valoare sau URL complet pentru o adresă întreagă.
- Bifează Folosește + pentru spații (date de formular) pentru linkurile copiate dintr-un formular web.
- Pentru un link, citește Parametrii interogării, decodați ca să vezi fiecare nume și valoare.
- Copiază rezultatul.
Răspunsuri rapide
Ce înseamnă %20?
Un spațiu. Valoarea lui în hexazecimal este 20.
De ce apare un + în linkul meu în loc de %20?
Linkul probabil vine dintr-un formular, unde + înseamnă spațiu. Opțiunea „Folosește + pentru spații (date de formular)” îl decodează.
De ce văd %2520 în linkul meu?
Valoarea a fost codificată de două ori. Semnul procentual din %20 a fost codificat din nou ca %25. Decodează o dată ca să revii la %20, și încă o dată ca să obții spațiul.
Tradus din Original în engleză cu ajutorul AI.
Comentarii
Încă nu sunt comentarii. Fii primul.


