raatools/

Codificatore / Decodificatore URL

Codifica o decodifica URL e stringhe di query.

Cos'è la codifica URL?

La codifica URL (chiamata anche percent-encoding) è il meccanismo per convertire i caratteri non consentiti in un URL in un formato esadecimale sicuro. Ogni carattere non sicuro viene sostituito da un segno di percentuale seguito da due cifre esadecimali che rappresentano il suo codice ASCII. Ad esempio, uno spazio diventa %20, una e commerciale diventa %26 e un cancelletto diventa %23.

Gli URL possono contenere solo un insieme limitato di caratteri definiti dalla RFC 3986: lettere (A–Z, a–z), cifre (0–9) e pochi caratteri speciali (- _ . ~ ! * ' ( )). Ogni altro carattere — inclusi spazi, lettere non ASCII e caratteri riservati come & = ? # — deve essere percent-encoded prima di essere incluso in un URL.

Quando è necessario codificare un URL?

  • Quando si passano caratteri speciali nei parametri della query string (es. ?q=hello%20world).
  • Codifica dei dati di un modulo inviati tramite HTTP POST con content type application/x-www-form-urlencoded.
  • Costruzione programmatica di URL di richieste API con input fornito dall'utente.
  • Incorporazione di URL all'interno di altri URL (es. parametri di redirect).
  • Inclusione di caratteri Unicode (lettere accentate, emoji, caratteri CJK) negli URL.

Codifica vs. decodifica

La codifica converte il testo normale in una stringa sicura per URL sostituendo i caratteri non sicuri con equivalenti percent-encoded. La decodifica inverte questo processo, convertendo le sequenze percent-encoded nei loro caratteri originali. Questo strumento consente di passare tra le modalità di codifica e decodifica con un singolo clic.

Come usare questo strumento

Incollare o digitare il testo nel campo di input. Selezionare la modalità di codifica o decodifica. L'output si aggiorna istantaneamente. Fare clic sul pulsante di scambio per invertire la direzione usando l'output corrente come nuovo input. Questo è utile quando si vuole codificare una stringa e poi verificare il risultato decodificandola.

Caratteri che vengono codificati

Questo strumento usa la funzione encodeURIComponent() di JavaScript, che codifica tutti i caratteri eccetto: A–Z, a–z, 0–9 e i caratteri non riservati - _ . ! ~ * ' ( ). Questa è la codifica corretta per i valori dei parametri di query e i dati dei moduli. La funzione simile encodeURI() è meno aggressiva e preserva caratteri come : / ? # che hanno significato nella struttura dell'URL.

Errori comuni nella codifica URL

L'errore più comune è la doppia codifica — codificare una stringa già codificata, trasformando %20 in %2520. Questo rompe gli URL e crea confusione nei server. Verificare sempre se l'input è già codificato prima di applicare la codifica. Un altro errore è usare encodeURI() quando è necessario encodeURIComponent(), il che lascia & e = non codificati nei valori dei parametri.

Non codificare l'input dell'utente prima di inserirlo negli URL è una vulnerabilità di sicurezza. L'input utente non codificato può iniettare parametri di query aggiuntivi, rompere l'analisi degli URL o consentire attacchi di injection. Codificare sempre i valori forniti dall'utente quando si costruiscono URL programmaticamente.

Suggerimenti pratici

Nello sviluppo web, la maggior parte dei framework gestisce automaticamente la codifica URL nelle submission dei moduli e nelle librerie client HTTP. La codifica manuale è tipicamente necessaria quando si costruiscono URL dinamicamente in JavaScript, quando si passano dati nei frammenti URL o quando si eseguono debug di chiamate API che includono caratteri speciali.

Domande frequenti

Qual è la differenza tra %20 e + per gli spazi?

Entrambi rappresentano spazi, ma in contesti diversi. %20 è la codifica URL standard per gli spazi e funziona ovunque. Il segno + rappresenta gli spazi solo nelle query string che usano il formato application/x-www-form-urlencoded (invio di moduli HTML). In caso di dubbio, usare %20.

È necessario codificare i caratteri UTF-8?

Sì. I caratteri non ASCII (lettere accentate, emoji, caratteri cinesi, ecc.) devono essere codificati in UTF-8 e poi percent-encoded per essere inclusi negli URL. La funzione encodeURIComponent() di JavaScript gestisce entrambi i passaggi automaticamente, convertendo caratteri come é in %C3%A9.