Ce face encodeURIComponent / decodeURIComponent
Unele caractere au sens special în adrese (&, =, ?, /, #), iar altele nu sunt permise deloc (spațiul, diacriticele). encodeURIComponent le înlocuiește cu secvențe %XX (octeții UTF-8), astfel încât textul să fie o singură bucată a adresei, de exemplu valoarea unui parametru.
decodeURIComponent face operația inversă și aruncă URIError pentru secvențe invalide. Funcțiile vechi escape și unescape sunt învechite: nu tratează corect diacriticele. Pentru parametri, URLSearchParams face codificarea automat.
Parametri
| Parametru | Descriere |
|---|---|
text |
Textul codificat sau decodificat. |
Ce returnează
Un șir de caractere.
Exemple
Exemplul 1: Un parametru de căutare
const cautare = "cărți & reviste";
const adresa = `https://www.exemplu.ro/cauta?q=${encodeURIComponent(cautare)}`;
console.log(adresa);
console.log(decodeURIComponent("c%C4%83r%C8%9Bi%20%26%20reviste"));
Rezultat
https://www.exemplu.ro/cauta?q=c%C4%83r%C8%9Bi%20%26%20reviste
cărți & reviste
Exemplul 2: Față de escape și un text invalid
console.log(encodeURIComponent("Iași"));
console.log(escape("Iași"));
try {
decodeURIComponent("100%");
} catch (e) {
console.log(e.name);
}
Rezultat
Ia%C8%99i
Ia%u0219i
URIError
Greșeli frecvente
- Lipești în adresă un text nelucrat:
"?q=" + "a&b"creează doi parametri. Codifică valoarea sau foloseșteURLSearchParams. - Codifici de două ori și în adresă apare
%2520în loc de spațiu.
Comenzi înrudite
encodeURI / decodeURI: Codifică o adresă URL completă, păstrând caracterele cu rol de structură (: / ? & = #).URLSearchParams: Citește și construiește parametrii unei adrese (?pagina=2&sort=pret), cu codificare automată.new URL(): Desface o adresă URL în părți (domeniu, cale, parametri) și o construiește corect la loc.