In breve: l'URL encoding (percent-encoding) sostituisce i caratteri non sicuri con sequenze %XX così i link sopravvivono a spazi, accenti e simboli. Uno spazio diventa %20, una e commerciale diventa %26. Il punto è sapere quando codificare un intero URL rispetto a un singolo valore di query — e che encodeURIComponent ed encodeURI non sono intercambiabili.
Un URL può contenere in modo sicuro solo un insieme limitato di caratteri. Tutto il resto — spazi, lettere accentate e simboli riservati come ?, &, # ed = — deve essere percent-encoded, altrimenti il link si rompe o punta dove non dovrebbe.

Cosa fa davvero il percent-encoding
Ogni carattere non sicuro è sostituito da un segno di percentuale seguito dal suo valore di byte esadecimale. Uno spazio è %20, una e commerciale %26, un punto interrogativo %3F. La decodifica inverte il processo, riportando ogni %XX valido al carattere originale.
%20 rispetto a + per gli spazi
Entrambi possono significare «spazio», ma non nello stesso posto. %20 è lo spazio percent-encoded usato in tutto il percorso e la query di un URL. Il segno più + significa spazio solo nel contesto application/x-www-form-urlencoded — invii di form e query string — e altrove è trattato letteralmente. Nel dubbio, %20 è la scelta più sicura e universale.
encodeURIComponent rispetto a encodeURI
È la distinzione che manda in confusione. Usa encodeURIComponent per un singolo valore che inserisci in un URL — ad esempio il termine di ricerca in ?q=hello%20world. Codifica caratteri riservati come & ed = così non vengono scambiati per la struttura dell'URL. Usa encodeURI solo su un URL completo, dove quei caratteri riservati devono mantenere il loro significato strutturale. Codificare un intero URL con encodeURIComponent rovinerebbe i suoi stessi :// e ?; codificare un singolo parametro con encodeURI lascia caratteri pericolosi non codificati.
Quando codificare
- Costruendo una query string da input utente (termini di ricerca, filtri, nomi).
- Inserendo un link dentro un altro link come parametro
?redirect=o?url=. - Gestendo nomi di file o percorsi che contengono spazi o accenti.
- Debuggando un link che funziona in locale ma si rompe quando è condiviso.
L'URL encoding non è il Base64
Risolvono problemi diversi. Il percent-encoding rende sicuri i caratteri non sicuri dentro un URL; il Base64 ricodifica dati binari in una stringa ASCII compatta, e il suo output ha comunque bisogno di URL-encoding se finisce in un link. Scegliere quello sbagliato produce link che sembrano codificati ma non funzionano.
Un flusso pratico
Incolla il valore grezzo nel Codificatore/Decodificatore URL per codificare un parametro o decodificare una stringa %XX sospetta — decodifica le sequenze valide e segnala quelle non valide invece di corromperle in silenzio. Se lo stesso contenuto passa anche per il Base64, controllalo con il Codificatore/Decodificatore Base64 così applichi i due passaggi nell'ordine giusto.
Errori comuni da evitare
- Codificare un URL completo con
encodeURIComponente romperne la struttura. - Dare per scontato che
+significhi spazio ovunque in un URL. - Doppia codifica — far passare di nuovo nell'encoder una stringa già codificata.
- Confondere il percent-encoding con il Base64.
Codifica le parti, non il tutto, e un link con spazi, accenti o un URL annidato viaggerà intatto.