Cosa fa questo strumento
Il testo diventa byte UTF-8, e ogni byte fuori dall’insieme non riservato viene scritto con un segno di percentuale seguito da due cifre esadecimali. Restano intatti lettere, cifre e - . _ ~.
Tutto il resto viene trattato, compresi i caratteri che danno struttura a un URL:
a b → a%20b
a+b&c=d → a%2Bb%26c%3Dd
café → caf%C3%A9
😀 → %F0%9F%98%80
Codifica percentuale, non da modulo
È la distinzione da portarsi via, perché corrompe dati in silenzio in entrambi i versi.
La codifica percentuale è quella di un percorso URL e di una query string moderna. Lì lo spazio si scrive %20. Un segno più è un più letterale, ed è esso stesso trattato come %2B quando compare in un valore.
La codifica da modulo — application/x-www-form-urlencoded, quello che invia un form HTML — scrive invece lo spazio come +. È la convenzione più antica, ed è ancora ovunque.
Questo strumento applica la prima regola, come fanno encodeURIComponent e decodeURIComponent nel browser.
La conseguenza in decodifica
Una stringa proveniente da un modulo, o da una query string scritta in quello stile, qui manterrà i segni più anziché riportarli a spazi. a+b si decodifica in a+b.
È corretto per la codifica percentuale e sbagliato rispetto a ciò che probabilmente volevi. Se l’input viene da un modulo, sostituisci + con %20 prima di decodificare, oppure usa un decodificatore da modulo.
Un segno di percentuale isolato, senza due cifre esadecimali dopo, dà errore anziché una congettura: 100% non è decodificabile, e fingere il contrario inventerebbe un byte.
Codifica un valore, non un URL
Dagli un URL intero e tratterà anche il :// e i separatori, che non è lo scopo. Codifica ogni valore separatamente, poi costruisci l’URL attorno.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.