Salt la conținut
Quaestio

Codificare URL

Codifică textul care trebuie să intre într-o adresă web sau transformă o adresă codificată înapoi în text lizibil.

0 caractere · 0 octeți

Rezultat

Scrie ceva în câmpul de mai sus.

Ca o singură componentă, sunt codificate și barele oblice și semnele întrebării. Fără bifă, structura adresei se păstrează și sunt codificate doar caracterele nepermise.

Încorporează

Încorporează instrumentul pe site-ul tău

Copiază codul și lipește-l acolo unde vrei să apară instrumentul, de exemplu într-un articol de blog sau pe pagina unei școli. Este gratuit, caseta nu are reclame, iar instrumentul calculează în browserul vizitatorului.

Cum funcționează

Adresele web pot conține doar un set limitat de caractere. Orice altceva se scrie ca semnul procent urmat de valoarea caracterului în hexazecimal, motiv pentru care un spațiu devine %20.

Diferența dintre cele două moduri este ce socotești structură. Codificarea unei singure componente codifică și barele oblice, semnele întrebării și semnele egal, pentru că altfel ar fi citite ca părți ale adresei.

Codificarea întregii adrese lasă aceste caractere neatinse, ca structura să rămână întreagă. Folosește acest mod pentru o adresă gata făcută care conține doar câteva caractere ce trebuie codificate.

Dacă alegi modul greșit pentru un parametru, destinatarul poate citi o valoare ca pe mai multe. O valoare care vine după un semn egal ar trebui aproape întotdeauna codificată ca o singură componentă.

Semnul plus este o capcană: în partea de interogare a unei adrese înseamnă din motive istorice un spațiu, în timp ce în cale înseamnă chiar plus.

Funcțiile din spatele modurilor

Modul pentru o singură componentă folosește funcțiile JavaScript encodeURIComponent și decodeURIComponent, iar modul pentru toată adresa encodeURI și decodeURI, toate patru definite în standardul ECMAScript. Fiecare caracter care trebuie codificat este transformat mai întâi în UTF-8, iar fiecare octet este scris ca semnul procent urmat de două cifre hexazecimale. Ca o singură componentă, plăcintă & ceai devine deci pl%C4%83cint%C4%83%20%26%20ceai. Ca adresă întreagă, ampersandul rămâne: pl%C4%83cint%C4%83%20&%20ceai. Un caracter care nu poate fi scris în UTF-8, de exemplu o jumătate singură dintr-o pereche surogat rămasă după o copiere stricată, dă un mesaj de eroare în loc de rezultat.

Caractere care nu sunt codificate niciodată

ECMAScript lasă necodificate în ambele moduri literele A–Z și a–z, cifrele, liniuța de subliniere, cratima, punctul, semnul exclamării, tilda, asteriscul, apostroful și parantezele. RFC 3986 socotește nerezervate doar cratima, punctul, liniuța de subliniere și tilda; semnul exclamării, apostroful, parantezele și asteriscul fac parte din delimitatorii rezervați și pot avea un sens în unele adrese.

Modul pentru toată adresa lasă în plus neatinse punctul și virgula, bara oblică, semnul întrebării, două puncte, a-rond, ampersandul, semnul egal, plusul, dolarul, virgula și diezul. Parantezele drepte sunt în schimb codificate, așa că o adresă IPv6 dintr-un URL, ca http://[::1]:8080/, devine http://%5B::1%5D:8080/.

Semnul plus și formularele

Formularele sunt codificate ca application/x-www-form-urlencoded, unde URL Standard de la WHATWG scrie spațiul ca plus și codifică în plus semnul exclamării, apostroful, parantezele și tilda. Instrumentul scrie întotdeauna %20, iar decodificarea nu transformă plusul în spațiu: a+b rămâne a+b. Dacă textul vine dintr-un formular, înlocuiește mai întâi semnele plus cu spații.

Erori la decodificare

Decodificarea cere UTF-8 valid. %E3, care este ă în vechea codificare ISO 8859-2, dă mesajul de eroare, în timp ce %C4%83 dă ă. Un semn procent care nu este urmat de două cifre hexazecimale, ca în a%zz, este și el o eroare. În modul pentru toată adresa, delimitatorii codificați sunt lăsați neatinși: a%2Fb rămâne a%2Fb, pentru că o bară oblică decodificată ar schimba structura adresei.

Surse

Cum sunt verificate instrumentele