Cos'è la codifica URL? Una spiegazione completa della codifica percent
Risposta rapida
La codifica URL (codifica percentuale) sostituisce i caratteri non sicuri in URL con % seguito da due cifre esadecimali. Ad esempio, lo spazio diventa %20 e & diventa %26. Garantisce che URLs possa essere trasmesso senza ambiguità. Utilizza il nostro codificatore e decodificatore URL gratuito per convertire nel tuo browser.
Introduzione
La codifica URL, chiamata anche codifica percentuale, è un meccanismo per codificare i caratteri speciali in un URL in modo che possano essere trasmessi in modo sicuro su Internet. URLs può contenere solo un set limitato di caratteri ASCII: lettere, cifre e alcuni caratteri riservati. Qualsiasi altro carattere (spazi, virgolette, lettere non ASCII) deve essere codificato come segno di percentuale (%) seguito da due cifre esadecimali che rappresentano il valore in byte del carattere. La codifica URL è definita da RFC 3986.
Passo dopo passo
-
Comprendi quali caratteri necessitano di codifica
I caratteri non riservati (A-Z, a-z, 0-9, -, _, ., ~) non necessitano di codifica. I caratteri riservati (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) hanno un significato speciale in URLs e devono essere codificati se utilizzati come dati. Tutti gli altri caratteri (spazi, virgolette, non ASCII) devono essere codificati.
-
Impara il meccanismo di codifica
Ogni carattere che necessita di codifica viene convertito nella sua sequenza di byte UTF-8, quindi ogni byte viene rappresentato come %XX dove XX è il valore esadecimale. Spazio (0x20) → %20. Il carattere non ASCII 'é' (UTF-8: 0xC3 0xA9) → %C3%A9.
-
Distinguere encodeURI da encodeURIComponent
encodeURI() codifica un URL completo ma preserva i caratteri riservati (:/?&=) che fanno parte della struttura URL. encodeURIComponent() codifica tutto tranne i caratteri non riservati: usalo per i valori dei parametri di query in cui i caratteri riservati sono dati, non strutture.
-
Decodifica con codifica percentuale URLs
La decodifica inverte la codifica: %20 → spazio, %C3%A9 → é. Utilizzare decodeURI() per URLs completo e decodeURIComponent() per i valori dei parametri di query. Le sequenze di escape non valide (come %ZZ) generano errori.
Esempi
Codificare uno spazio
Ingresso: hello world
Produzione: hello%20world
Codifica testo non ASCII
Ingresso: café
Produzione: caf%C3%A9
Codificare il valore di un parametro di query
Ingresso: name=John Doe & Co.
Produzione: name%3DJohn%20Doe%20%26%20Co.
Problemi comuni
- Codifica l'intero URL quando è necessario codificare solo i valori —codifica i valori dei parametri di query, non la struttura URL (://?&=).
- Doppia codifica: se un URL è già codificato, la codifica produce nuovamente %2520 anziché %20. Decodifica prima se non sei sicuro che sia già codificato.
- Utilizzo errato di encodeURI e encodeURIComponent: encodeURI preserva i caratteri della struttura URL; encodeURIComponent li codifica. Utilizzare quest'ultimo per i valori dei parametri di query.
- Sequenze di escape non valide:%ZZ o un singolo % alla fine non sono valide e genereranno errori una volta decodificate.
Suggerimenti
- Codifica sempre i valori dei parametri di query che possono contenere spazi, caratteri speciali o input dell'utente per impedire l'inserimento di URL.
- Utilizza encodeURIComponent() per i valori dei parametri di query e encodeURI() per URLs completo che richiede solo la codifica dei caratteri non sicuri.
- La codifica URL non è crittografia: chiunque può decodificarla. Non usarlo mai per nascondere dati sensibili.
- Utilizza il nostro codificatore e decodificatore URL per una conversione istantanea e privata nel tuo browser.