Codifica URL
Highlight è un byte percentuale codificato.
Strumento online gratuito di codifica/decodifica URL. Supporta 4 modalità encodeURIComponent/encodeURI/RFC 3986, evidenziazione in tempo reale dei caratteri codificati, modalità batch multilinea, Query Only per codificare solo i valori dei parametri. Elaborazione locale nel browser, nessun upload di dati.
Raccomandazioni correlate
Cos'è la codifica URL?
La codifica URL (codifica percentuale) è il processo di conversione dei caratteri non sicuri negli URL nel formato %XX. Gli URL possono contenere solo un piccolo sottoinsieme di caratteri ASCII (lettere, cifre, -_.~), tutti gli altri caratteri (inclusi cinese, spazi, simboli speciali) devono essere codificati prima di essere trasmessi in un URL. Ad esempio, lo spazio è codificato come %20, il carattere cinese '中' come %E4%B8%AD.
**encodeURIComponent vs encodeURI**: Queste sono le due funzioni di codifica più utilizzate. encodeURIComponent codifica in modo più esaustivo, inclusi i delimitatori di parametri come &, =, ?, quindi è adatta per codificare valori di parametri singoli. encodeURI preserva la struttura dell'URL (schema://, percorso, /, ?, #), quindi è adatta per codificare URL completi. L'uso errato causa errori di analisi dei parametri.
**RFC 3986 vs standard precedenti**: RFC 3986 tratta la tilde ~ come carattere sicuro che non richiede codifica, mentre gli standard iniziali la codificano come %7E. L'uso di RFC 3986 riduce gli escape non necessari, migliora la leggibilità dell'URL ed evita problemi di analisi di %7E su alcuni server.
**Modalità Query Only**: Viene utilizzata quando è necessario codificare solo i valori dei parametri di query nell'URL, senza influenzare i nomi delle chiavi, i segni di uguale e i simboli &. Ad esempio, ?name=张三 viene codificato come ?name=%E5%BC%A0%E4%B8%89, mantenendo i nomi delle chiavi leggibili e codificando solo i valori.
**Evidenziazione della codifica**: Evidenzia in tempo reale i caratteri nel formato %XX in color ambra in modo che gli utenti vedano a colpo d'occhio quali caratteri sono stati codificati. Questo aiuta a comprendere le regole di codifica: lettere e numeri sono generalmente caratteri sicuri che non vengono codificati, solo il cinese e i simboli speciali vengono codificati. Tutti i calcoli vengono eseguiti localmente nel browser, nessun dato viene inviato.
Casi d'uso
- Debug parametri API: confronta gli output di encodeURIComponent e encodeURI per risolvere problemi di mancata corrispondenza della firma dell'interfaccia
- Decodifica log: decodifica in batch il contenuto codificato URL nei log per ripristinare testo leggibile
- Costruzione URL: la modalità Query Only preserva i nomi delle chiavi e codifica solo i valori, evitando errori di formato dovuti alla concatenazione manuale
- Sviluppo frontend: l'evidenziazione aiuta a capire quali caratteri vengono escapati, utile per eseguire il debug dei reindirizzamenti di pagina
- Migrazione dati: elabora in batch dati codificati URL esportati da sistemi legacy per convertirli al nuovo formato
Come utilizzare
- Inserisci o incolla l'URL o il testo da codificare/decodificare
- Seleziona la direzione di codifica (Codifica/Decodifica) e la modalità (Component / URI / full / RFC 3986)
- Attiva la modalità batch per dati multilinea, o Query Only per codificare solo i valori dei parametri
- Verifica il risultato evidenziato e copia la stringa codificata per l'uso nelle richieste API o nella costruzione di URL
Funzionalità
- Quattro modalità di codifica: passaggio con un clic tra encodeURIComponent / encodeURI / full / RFC 3986, confronto in tempo reale delle differenze di output
- Evidenziazione codifica: evidenzia in tempo reale i caratteri %XX escapati, marcatura color ambra per visualizzare i risultati della codifica a colpo d'occhio
- Modalità batch: supporto per codifica/decodifica multilinea in batch, ogni riga viene elaborata indipendentemente, ideale per log o dati in blocco
- Modalità Query Only: codifica solo la parte del valore del parametro URL (dopo il segno di uguale), mantenendo intatti i nomi delle chiavi, i simboli e la struttura del percorso
- Debounce in tempo reale: codifica/decodifica automatica in 300ms, nessun clic su pulsanti necessario, i risultati appaiono durante la digitazione
- Conteggio caratteri: visualizza in tempo reale il numero di caratteri inseriti, pratico per verificare i limiti di lunghezza dei parametri API
Esempi di codice
Codifica/Decodifica URL in JavaScript
// encodeURIComponent: codifica valori di parametri singoli (più comune)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B
// encodeURI: codifica URL completa (preserva caratteri strutturali :/?#&=)
const url = encodeURI('https://example.com/search?q=ciao mondo');
console.log(url);
// Decodifica
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四
// Conforme RFC 3986 (~ non codificato)
function rfc3986Encode(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}
// API URLSearchParams (metodo moderno, codifica automatica)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%ACCodifica/Decodifica URL in Python
from urllib.parse import quote, unquote, urlencode, quote_plus
# quote: simile a encodeURIComponent
encoded = quote('张三&李四')
print(encoded) # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B
# Modalità RFC 3986 (~ non codificato, è l'impostazione predefinita)
print(quote('hello~world')) # hello~world
# quote_plus: gli spazi sono codificati come + (formato modulo)
print(quote_plus('hello world')) # hello+world
# Decodifica
print(unquote(encoded)) # 张三&李四
# urlencode: costruisci query string
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%ACCodifica/Decodifica URL in Java
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;
public class URLEncodeExample {
public static void main(String[] args) throws Exception {
// Codifica URL (URLEncoder è formato modulo, spazi diventano +)
String encoded = URLEncoder.encode("张三&李四", "UTF-8");
System.out.println(encoded);
// %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B
// Decodifica
String decoded = URLDecoder.decode(encoded, "UTF-8");
System.out.println(decoded); // 张三&李四
// Costruisci URL completa (la classe URI gestisce automaticamente la codifica)
URI uri = new URI("https", "example.com", "/search", "q=ciao", null);
System.out.println(uri.toASCIIString());
}
}Domande frequenti
Qual è la differenza tra encodeURIComponent e encodeURI?
encodeURIComponent codifica tutti i caratteri non sicuri, inclusi &, =, ?, ecc., quindi è adatto per codificare valori di parametri singoli. encodeURI preserva i caratteri strutturali dell'URL (:, /, ?, #, ecc.), quindi è adatto per codificare URL completi. Caso d'uso: Component per valori di parametri, URI per URL completi.
Qual è la differenza tra RFC 3986 e la codifica standard?
RFC 3986 è una versione aggiornata dello standard URL che tratta la tilde ~ come carattere sicuro che non richiede codifica, mentre gli standard precedenti la codificano come %7E. L'uso di RFC 3986 evita differenze di analisi su alcuni server e offre una migliore compatibilità.
In quali scenari viene utilizzata la modalità Query Only?
Viene utilizzata quando hai una query string URL come ?name=张三&city=北京 e desideri codificare solo i valori dei parametri senza influenzare i nomi delle chiavi e i simboli. In questo caso, name e city rimangono invariati, mentre i valori vengono codificati come %E5%BC%A0%E4%B8%89 e %E5%8C%97%E4%BA%AC.
Gli spazi devono essere codificati come + o come %20?
Nel formato application/x-www-form-urlencoded (invio di moduli HTML), gli spazi sono codificati come +. Ma nei percorsi URL e in encodeURIComponent, gli spazi sono sempre codificati come %20. Questo strumento utilizza il formato %20 per impostazione predefinita.
Perché strumenti diversi producono risultati diversi per lo stesso carattere cinese?
Dipende dal metodo di codifica dei caratteri. Questo strumento utilizza la codifica UTF-8 (standard Web), il carattere cinese '中' è codificato come %E4%B8%AD. Se altri strumenti utilizzano la codifica GBK, il risultato sarà %D6%D0. Si consiglia di utilizzare sempre UTF-8 per gli URL Web.
A cosa serve l'evidenziazione della codifica?
Evidenzia i caratteri codificati nel formato %XX (come spazio→%20), aiutando a comprendere le regole di codifica e a risolvere i problemi. Lettere e numeri sono caratteri sicuri che non vengono codificati, solo il cinese e i simboli speciali vengono codificati.
Il carattere % stesso deve essere codificato?
Sì. % è il carattere di inizio escape nella codifica URL. Se un % letterale appare in un valore di parametro, deve essere codificato come %25; altrimenti verrà interpretato erroneamente come prefisso di codifica, causando errori di analisi. Ad esempio, 100% deve essere codificato come 100%25.
Glossario
- Codifica percentuale (Percent-encoding)
- Il nome ufficiale della codifica URL, un metodo di codifica che rappresenta i caratteri utilizzando % seguito da due cifre esadecimali. Ad esempio, lo spazio è codificato come %20, il carattere cinese '中' come %E4%B8%AD.Wikipedia - Codifica percentuale
- encodeURIComponent
- Funzione integrata di JavaScript che codifica tutti i caratteri tranne A-Z a-z 0-9 - _ . ! ~ * ' ( ). È più comunemente usata per codificare valori individuali di parametri di query URL.
- encodeURI
- Funzione integrata di JavaScript che preserva i caratteri strutturali dell'URL (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) e codifica solo i caratteri che necessitano realmente di codifica. È usata per codificare URL completi.
- RFC 3986
- L'ultimo standard IETF per la sintassi generica URI (2005), che definisce le regole di codifica URL e classifica la tilde ~ come carattere non riservato (non richiede codifica). Sostituisce i precedenti RFC 2396 e RFC 1738.RFC 3986
- Caratteri riservati (Reserved Characters)
- Caratteri con significato speciale negli URL, come : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Questi caratteri devono essere codificati quando usati come dati, ma non nelle loro posizioni strutturali.
- Caratteri non riservati (Unreserved Characters)
- Caratteri sicuri che possono essere utilizzati in qualsiasi posizione nell'URL senza codifica, inclusi A-Z, a-z, 0-9, -, _, ., ~ (secondo RFC 3986).
- Query String
- La parte dell'URL dopo ?, composta da coppie key=value separate da &. Ad esempio, in ?name=张三&age=20, name=张三 e age=20 sono due parametri.
- URLSearchParams
- API fornita dai browser moderni per costruire e analizzare facilmente le query string URL, con gestione automatica di codifica e decodifica. Più sicura e affidabile della concatenazione manuale di stringhe.
- application/x-www-form-urlencoded
- Il formato di invio predefinito dei moduli HTML, dove gli spazi sono codificati come + invece di %20, leggermente diverso da encodeURIComponent. I framework lato server di solito gestiscono automaticamente entrambi i formati.
- Codifica UTF-8
- La codifica dei caratteri standard del Web. Nella codifica URL, i caratteri non ASCII (come cinese, emoji) vengono prima convertiti in sequenze di byte UTF-8, quindi ogni byte viene codificato nel formato %XX.
Confronto escape caratteri in 4 modalità di codifica
| Carattere | Significato | encodeURIComponent | encodeURI | RFC 3986 |
|---|---|---|---|---|
Spazio | Spazio | %20 | %20 | %20 |
! | Punto esclamativo | %21 | ! | %21 |
# | Identificatore di frammento | %23 | # | %23 |
$ | Simbolo del dollaro | %24 | $ | %24 |
& | Separatore di parametri | %26 | & | %26 |
' | Virgoletta singola | %27 | ' | %27 |
( | Parentesi sinistra | %28 | ( | %28 |
) | Parentesi destra | %29 | ) | %29 |
* | Asterisco | %2A | * | %2A |
+ | Più | %2B | + | %2B |
, | Virgola | %2C | , | %2C |
/ | Separatore di percorso | %2F | / | %2F |
: | Due punti | %3A | : | %3A |
; | Punto e virgola | %3B | ; | %3B |
= | Uguale | %3D | = | %3D |
? | Query string | %3F | ? | %3F |
@ | Chiocciola | %40 | @ | %40 |
~ | Tilde | %7E | %7E | ~ |
Riferimento rapido caratteri riservati URL comuni
| Codificato | Carattere originale | Uso nell'URL |
|---|---|---|
%20 | (spazio) | Spazio |
%21 | ! | Sottodelimitatore |
%23 | # | Identificatore di frammento (hash) |
%25 | % | Carattere di escape stesso |
%26 | & | Separatore parametri di query |
%2B | + | Più / spazio modulo |
%2F | / | Separatore di percorso |
%3A | : | Separatore di schema |
%3D | = | Separatore chiave-valore |
%3F | ? | Inizio query string |
%40 | @ | Separatore autenticazione/email |
%5B | [ | Parametro array (RFC 3986) |
Authoritative References
- Confronto sicuro testo
- Conversione binario
- Cifrario di Cesare
- Codice Morse
- Conversione Hex
- Video in Base64
- Da Base64 a Video
- Immagine in Base64
- Da Base64 a Immagine
- Testo in Base64
- Da Base64 a Testo
- Verificatore hash di file
- File in Base64
- Base64 in File
- Audio in Base64
- Base64 in Audio
- Crittografia e decrittografia AES
- Crittografia e decrittografia DES
- Encoder Decoder Base32
- Codifica e decodifica Base58
- Codifica Base64
- Decodifica Base64
- Confronta Base64
- Dividi Base64
- Unisci Base64 multi-linea
- Formattazione Base64
- Verifica Formato Base64
- Codifica Base64 in batch
- Decodifica Base64 Batch
- Pulizia Base64
- Gestione Padding Base64
- Statistiche Lunghezza Base64
- Da Base64 a Hex
- Convertitore Base64 DataURL
- Convertitore Base64-Hex
- Codifica Base85
- Generatore e verificatore HMAC
- Derivazione chiave PBKDF2
- Hash MD5
- Hash SHA-256
- Hash SHA1
- Hash SHA512
- Decodificatore, Verificatore e Generatore JWT
- Codifica e decodifica entità HTML
- Unicode Escape
- Codifica URL
- Base64 URL Safe
- MIME Base64
- Offuscamento Java
- Offuscamento JS
- Offuscamento PHP
- Offuscamento Python