RevealTheme logo

Codificatore e decodificatore di URL

Converte il testo in codifica sicura per URL (codifica percentuale) e viceversa. Utile per stringhe di query, reindirizzamenti e flussi OAuth.

Come usare questo strumento

  1. 1

    Choose a mode with the Encode or Decode button at the top (Encode is selected by default).

  2. 2

    Type or paste your text into the input box — a raw value to encode, or a percent-encoded string to decode.

  3. 3

    Click Run to convert the text; the result appears in the monospace box below.

  4. 4

    Copy the output from the result box, or switch modes and click Run again to reverse the conversion.

Che cos'è la codifica degli URL e quando ne ha bisogno?

La codifica degli URL (chiamata anche 'codifica percentuale', specificata nella RFC 3986) è il processo di conversione dei caratteri che hanno un significato speciale negli URL —o dei caratteri che semplicemente non sono sicuri negli URL— in una sequenza di escape esadecimale '%XX'. La specifica degli URL riserva alcuni caratteri con un significato strutturale: '?' avvia la stringa di query, '#' avvia il frammento, '&' separa i parametri di query, '/' separa i segmenti del percorso e così via. Se l'input dell'utente contiene uno di questi caratteri e lei lo incorpora così com'è in un URL, il parser lo interpreta erroneamente. La codifica degli URL evita questo problema sostituendo ogni carattere riservato o non sicuro con la sua rappresentazione esadecimale in byte preceduta da '%'. Uno spazio diventa %20, '&' diventa %26, '=' diventa %3D. I caratteri non ASCII (cirillico, cinese, emoji) vengono convertiti in sequenze UTF-8 a più byte, con ogni byte codificato in percentuale. I browser lo gestiscono automaticamente quando fa clic su un link, ma ogni volta che costruisce un URL tramite codice —quando crea una query di ricerca, una destinazione di reindirizzamento, una callback OAuth o una firma di webhook— deve prima codificare i valori forniti dall'utente. Questo strumento utilizza le stesse funzioni encodeURIComponent / decodeURIComponent che userebbe il suo codice JavaScript, così il comportamento corrisponde esattamente a quello di produzione.

Casi d'uso comuni

  • Codifica i termini di ricerca dell'utente prima di aggiungerli a un URL di ricerca (?q=input+utente).

  • Passa in sicurezza un parametro redirect_uri OAuth a un server di autorizzazione.

  • Costruisci URL di webhook che includano payload JSON codificati nella stringa di query.

  • Codifica un URL 'returnTo' affinché sopravviva al passaggio attraverso altri URL.

  • Decodifica i valori codificati che vedi nella barra degli indirizzi del browser dopo l'invio di un modulo.

  • Verifica come viene analizzato un URL malformato: codifica un carattere speciale e osserva cosa succede.

Domande frequenti

Quando devo codificare un URL?
Codifichi sempre i valori forniti dall'utente prima di inserirli in un URL: parametri di query, segmenti del percorso o frammenti. La mancata codifica è una delle cause più comuni di errori subdoli: il valore 'gatti & cani' rompe una stringa di query finché non viene codificato come 'gatti%20%26%20cani'.
Qual è la differenza tra encodeURI e encodeURIComponent?
encodeURI è per gli URL completi: lascia intatti i caratteri strutturali come '/', '?', '&', '=' perché hanno un significato in un URL. encodeURIComponent è per le parti di URL (valori di query, segmenti di percorso): codifica tutto ciò che non è alfanumerico. Usi encodeURIComponent sui singoli valori di query; non usi mai encodeURI su un valore di query fornito dall'utente (non eseguirà l'escape di '&' e romperà la sua stringa di query).
Che cos'è il Base64 sicuro per URL rispetto alla codifica degli URL?
Sono concetti distinti. La codifica degli URL (questo strumento) sostituisce carattere per carattere i caratteri speciali. Il Base64 sicuro per URL è una variante di Base64 che usa '-' e '_' al posto di '+' e '/', in modo che il risultato sia già sicuro per URL senza ulteriore codifica.
Perché a volte '+' viene decodificato come spazio?
In application/x-www-form-urlencoded (invii di moduli), '+' è l'abbreviazione di uno spazio. La maggior parte dei decodificatori lo mantiene. Nell'analisi degli URI moderna, '%20' è la codifica corretta dello spazio. decodeURIComponent tratta '+' come un '+' letterale; usi decodeURI o un decodificatore di moduli per convertire '+' in spazio.
Come vengono codificati i caratteri non ASCII?
Vengono prima convertiti in byte UTF-8 e poi ogni byte viene codificato in percentuale. Così, 'café' diventa 'caf%C3%A9': 'é' sono due byte UTF-8 (0xC3 0xA9). Questo strumento gestisce UTF-8 correttamente; alcuni strumenti datati codificano usando Latin-1, il che produce un output diverso.
La codifica degli URL è la stessa cosa della codifica delle entità HTML?
No. La codifica degli URL (%XX) esegue l'escape dei caratteri per gli URL. La codifica delle entità HTML (&, <) esegue l'escape dei caratteri per il markup HTML. I contesti sono diversi; codificare uno nel contesto dell'altro è un errore comune di XSS.

Strumenti correlati