Codificatore di URL
Codifica un testo in percentuale perché possa viaggiare senza problemi in un URL, interamente nel tuo browser.
Gira interamente nel tuo browser. Non viene caricato, registrato o salvato niente.
Un URL ha una grammatica, e i caratteri che ne fanno parte — "?", "&", "/", "#", gli spazi — vanno protetti quando fanno parte di un valore e non della struttura. Quella protezione è la codifica in percentuale.
Come funziona
Ogni carattere fuori dall'insieme non riservato del RFC 3986 — lettere, cifre, "-", ".", "_" e "~" — viene sostituito da un segno di percentuale e dal valore esadecimale di ciascuno dei suoi byte UTF-8. Uno spazio diventa %20 e una lettera accentata diventa due escape, perché in UTF-8 sono due byte.
Lo stile dei dati di modulo esiste perché l'invio dei moduli HTML è più vecchio di quella regola: lì uno spazio è "+" e anche "~" viene protetto. Scegli quello quando stai costruendo un corpo application/x-www-form-urlencoded, e lo stile componente per tutto il resto.
Esempi
| Caso | Dati inseriti | Risultato |
|---|---|---|
| Una frase di ricerca che finisce in una query string | coffee & cake | coffee%20%26%20cake |
| La stessa frase come dati di modulo | coffee & cake | coffee+%26+cake |
Domande frequenti
Devo codificare un URL intero con questo?
No. Codificare un URL completo protegge anche il "://" e i separatori, e ti lascia con una stringa che nessun client può seguire. Codifica i singoli valori, poi monta l'URL con quelli.
Perché qui "!" viene codificato e la console del mio browser lo lascia stare?
encodeURIComponent di JavaScript salta di proposito "!", "'", "(", ")" e "*" anche se il RFC 3986 li riserva. Codificarli è sempre accettato ed evita sorprese con analizzatori più severi, quindi questo strumento lo fa.
E il "#" di un frammento?
Un "#" letterale dentro un valore va codificato come %23, altrimenti tutto quello che segue viene letto come frammento e non raggiunge mai il server.
Da sapere
- Tutto avviene nel tuo browser. Quello che incolli non viene caricato, registrato o salvato.