Exemple de codare URL
Variante gata făcute: copiază codul direct sau deschide exemplul în generator și modifică-l după nevoie.
encodeURIComponent("mașini de spălat & uscătoare")
// ma%C8%99ini%20de%20sp%C4%83lat%20%26%20usc%C4%83toare
https://www.exemplu.ro/cauta?q=ma%C8%99ini%20de%20sp%C4%83lat&pret_max=2000&sort=pret%3Aasc
→ https://www.exemplu.ro/cauta?q=mașini de spălat&pret_max=2000&sort=pret:asc
Bun%C4%83+ziua%21+Am+o+%C3%AEntrebare+%28urgent%C4%83%29.
const url = new URL("https://www.exemplu.ro/cauta");
url.searchParams.set("q", "mașini de spălat");
url.searchParams.set("pagina", 2);
url.toString();
// https://www.exemplu.ro/cauta?q=ma%C8%99ini+de+sp%C4%83lat&pagina=2
Cum folosești unealta
- Alege Operația: Codează componentă (pentru valoarea unui parametru), Codează URL întreg sau Decodează.
- Scrie textul sau lipește adresa în câmpul Textul sau adresa.
- Bifează Format de formular dacă spațiul trebuie să fie
+, ca în datele trimise de formularele HTML. - Copiază rezultatul. Dacă textul e o adresă, tabelul arată fiecare parametru decodat. Totul rulează în browser.
Componentă sau URL întreg
encodeURIComponent codează tot ce are rol special într-o adresă (/ ? & = #), deci e varianta corectă pentru valoarea unui parametru. encodeURI lasă aceste caractere neatinse, ca adresa să funcționeze în continuare.
encodeURIComponent("ușă & fereastră") // u%C8%99%C4%83%20%26%20fereastr%C4%83
encodeURI("https://exemplu.ro/căutare?q=ușă")
// https://exemplu.ro/c%C4%83utare?q=u%C8%99%C4%83
Fiecare literă cu diacritice devine doi octeți UTF-8: ș este %C8%99, ă este %C4%83.
Echivalentele în alte limbaje
// PHP
rawurlencode("ușă și"); // u%C8%99%C4%83%20%C8%99i (spațiul = %20)
urlencode("ușă și"); // u%C8%99%C4%83+%C8%99i (spațiul = +)
# Python
from urllib.parse import quote, quote_plus, unquote
quote("ușă și", safe="") # ca encodeURIComponent
quote_plus("ușă și") # spațiul = +
Erori la decodare
Un % care nu e urmat de două cifre hexazecimale (de exemplu „50%”) sau octeți care nu formează UTF-8 valid (text codat odinioară în Windows-1250) fac decodeURIComponent să arunce o eroare. Unealta arată poziția fiecărei probleme și decodează restul textului.
Întrebări frecvente
Când e spațiul + și când %20?
În datele formularelor (application/x-www-form-urlencoded, adică partea de după ? trimisă de un formular) spațiul este +. În restul adresei, de exemplu în cale, spațiul se scrie %20, iar + înseamnă chiar semnul plus.
Pot pune diacritice direct în adresă?
Browserele le afișează frumos, dar le trimit codate. În linkuri și în cod e mai sigur să folosești forma codată.