Testo Semplice

Codificato in Percentuale

Cos'è l'Encoder URL?

Butta una stringa nel pannello di sinistra e quello di destra ti mostra la versione codificata in percentuale. Sotto al cofano gira encodeURIComponent, che fa l'escape di ogni carattere con un significato speciale in una URL — gli spazi diventano %20, le e commerciali diventano %26, la chiocciola diventa %40, e così via. Questa è la codifica che ti serve per i VALORI dei parametri di query, i segmenti di path, e ovunque una stringa grezza debba viaggiare dentro una URL senza romperla.

Esistono due varianti di codifica e la differenza conta. encodeURIComponent (questa pagina) fa l'escape di tutto quello che è speciale, inclusi ?, #, &, = e / — perché a livello di valore quei caratteri cambierebbero il significato della URL. encodeURI è più permissiva e lascia in pace quei caratteri strutturali, perché si aspetta che tu stia codificando una URL già formata per intero. MDN ha la tabella dei caratteri riservati se ti serve il dettaglio. Se stai costruendo una URL intera a partire da pezzi, ti serve l'URL Builder, non questa pagina.

La regola di codifica vera e propria viene da RFC 3986 §2.1: ogni byte non sicuro si scrive come % seguito dalle due cifre esadecimali dei suoi byte UTF-8. È per questo che un'emoji come il razzo finisce in quattro tripletti di percentuali (sono quattro byte UTF-8), mentre un ASCII come ! resta un solo tripletto. Lo standard URL del WHATWG formalizza il modo in cui i browser moderni lo fanno, e l'articolo di Wikipedia sulla codifica percentuale ha una tabella di riferimento pulita per controllare a mano. Tutto succede nel tuo browser. Niente viene caricato, niente viene loggato.

Come usare l'Encoder URL

Tre passi. La pagina si aggiorna mentre scrivi — niente pulsante Converti.

1

Incolla la tua stringa o clicca Esempio

Scrivi o incolla qualsiasi testo nel pannello di sinistra. Clicca Esempio per caricare una stringa con il tipo di caratteri in cui ti imbatti davvero — spazi, e commerciali, una mail, un segno di percentuale. Esempio di input:

Ava Chen & friends? [email protected]  100% off!

Unicode ed emoji funzionano senza problemi — l'encoder usa sequenze di byte UTF-8, quindi un nome giapponese o un'emoji si codificano in una sequenza percentuale multibyte e fanno il giro avanti e indietro pulito con qualunque decoder conforme allo standard.

2

Leggi l'output codificato

Il pannello di destra mostra la versione codificata in percentuale. Gli spazi diventano %20, & diventa %26, ? diventa %3F, @ diventa %40, e % stesso diventa %25. Si aggiorna mentre scrivi.

3

Copia o scarica

Clicca Copia per mettere la stringa codificata negli appunti, o Scarica per salvarla come file .txt. Usa Pulisci sul pannello di input per ripartire. Per andare nella direzione opposta, fa' un salto al Decoder URL.

Quando lo useresti davvero

Costruire un valore di query string a mano

Devi assemblare ?customer=Ava%20Chen&status=active per un test rapido con curl o un deep link? Codifica ogni valore qui e incollalo nella tua URL. Dimenticare di codificare un valore con dentro & (un nome cliente come "Smith & Co.") è la fonte classica del bug misterioso "l'API vede solo metà del mio parametro".

Codificare una URL di redirect

I flussi OAuth e i redirect SSO passano la URL di destinazione dentro un parametro di query (es. ?return_to=...). Quella URL di destinazione contiene a sua volta :, /, ?, & — e ognuno deve essere codificato in percentuale perché la URL esterna resti ben formata. L'RFC 6749 §3.1.2 lo dice esplicitamente per gli URI di redirect OAuth.

Codificare un segmento di path con uno slash dentro

Se la tua API REST ha rotte come /repos/:owner/:name e il nome contiene uno slash (raro ma legale in alcuni cataloghi), lo slash va codificato come %2F o il router lo tratterà da separatore di path. Stessa logica per nomi file con spazi o accenti nelle URL di download.

Sanitizzare l'input utente prima che tocchi una URL

Qualsiasi stringa che entra in una URL da un form HTML, da una casella di ricerca o da un'importazione CSV deve essere codificata. L'input utente non codificato è esattamente come si finisce con link rotti, vettori di parameter injection, o URL che funzionano per gli utenti ASCII e falliscono in silenzio per tutti gli altri. Le note di OWASP sul path traversal sono un buon promemoria di cosa costa saltare questo passo.

Domande frequenti

Devo usare encodeURIComponent o encodeURI?

Quasi sempre encodeURIComponent — è quello che usa questa pagina. È la scelta giusta per i valori dei parametri di query, i segmenti di path, e ovunque una stringa debba essere un "pezzo" di una URL. encodeURI serve per codificare una URL già strutturalmente completa (raro nella pratica — di solito stai costruendo da pezzi). Il riferimento di MDN linkato sopra ha la tabella completa di quali caratteri ciascuna funzione fa l'escape.

Perché a volte si usa + per gli spazi e altre volte %20?

Coesistono due tradizioni di codifica. application/x-www-form-urlencoded (il body ?chiave=valore dell'invio di un form HTML) usa + per lo spazio. La codifica percentuale generale dell'RFC 3986 usa %20. encodeURIComponent produce sempre %20. La maggior parte dei server accetta entrambi, ma se il tuo decoder a valle è strettamente in modalità form, sostituisci con .replace(/%20/g, "+") dopo la codifica.

Gestisce correttamente emoji e testo non ASCII?

Sì. L'encoder serializza l'input come UTF-8 prima, e poi codifica in percentuale ogni byte. Quindi un'emoji diventa una sequenza percentuale multibyte, e qualunque decoder conforme allo standard la riporta indietro. Se stai integrando con un sistema che usa Latin-1 o un'altra codifica legacy, hai un altro problema — cambia il sistema a monte, non improvvisare un encoder non-UTF-8 a mano.

Quali caratteri encodeURIComponent NON codifica?

Le lettere A-Z e a-z, le cifre 0-9, e i caratteri non riservati - _ . ! ~ * ' ( ). Tutto il resto viene codificato in percentuale. La lista viene direttamente dalla specifica originale ed è fissa su ogni motore JavaScript moderno — guarda la specifica ECMAScript di encodeURIComponent se vuoi capitolo e versetto.

L'input che incollo qui viene mandato da qualche parte?

No. La codifica gira interamente nel tuo browser tramite il motore JavaScript. Nessuna chiamata di rete, nessun server, nessun log. Incolla segreti, token, qualsiasi cosa sensibile — non lascia mai la tua macchina.

Quanto può essere grande la stringa che codifico qui?

C'è un limite di 256 KB sull'input. I valori reali nelle URL sono al massimo qualche kilobyte. Se devi codificare diversi MB di dati, quasi sicuramente stai cercando di incastrare un payload in una URL quando dovresti fare un POST con un body — codificalo lato server e salta il giro.

Altri strumenti URL e di codifica

Codificare è un'operazione. Ecco cosa ci si abbina naturalmente: