Codificatore di componenti URI

Se hai mai passato un valore come name=John & Jane in una URL senza codificarlo, conosci il problema: il & viene interpretato come un nuovo parametro e il server vede dati spazzatura. Questo strumento codifica in percentuale qualsiasi stringa per un uso sicuro come componente URI seguendo la RFC 3986, trasformando ogni carattere riservato in una coppia %HH (spazi inclusi). Incolla un frammento, un valore di query o un obiettivo di reindirizzamento e ottieni qualcosa di sicuro da concatenare in qualsiasi URL.

Come codificare un componente URI

  1. 1

    Incolla il tuo valore

    Inserisci un singolo valore di parametro di query, segmento di percorso o stringa di frammento.

  2. 2

    Scegli codifica o decodifica

    Cambia senso per trasformare gli escape percentuali nei caratteri originali.

  3. 3

    Esegui

    Lo strumento codifica ogni carattere in UTF-8, quindi sostituisce ogni byte riservato con %HH.

  4. 4

    Copia il risultato

    Inserisci direttamente l'output nel tuo modello di URL o client API.

Cosa viene sottoposto a escape

Questo codificatore segue la RFC 3986: solo l’insieme non riservato resta intatto, A-Z a-z 0-9 - _ . ~. Tutto il resto diventa UTF-8 codificato in percentuale, compresi lo spazio e i sotto-delimitatori ! * ' ( ) che l’encodeURIComponent di JavaScript lascerebbe intatti.

Carattere Codificato come
spazio %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Componente vs URI completo

Questo codificatore è più rigoroso di encodeURI, che lascia intatti : / ? # [ ] @ ! $ & ' ( ) * + , ; = perché quei caratteri sono strutturali in una URL. Per un valore che concateni in una stringa di query vuoi la forma rigorosa, ed è esattamente ciò che produce questo strumento: esegue l’escape persino di ! ' ( ) *, andando un passo oltre l’encodeURIComponent di JavaScript.

const url = `/search?q=${encodeURIComponent(userInput)}`;

Errori comuni

  • Doppia codifica: codificare qualcosa che è già codificato ti dà %2520 invece di %20. Decodifica sempre prima se non sei sicuro della fonte.
  • Segni più nei moduli: l’invio di moduli HTML codifica gli spazi come +, non come %20. I decodificatori che seguono rigorosamente la RFC 3986 (questo incluso) non trasformeranno + di nuovo in uno spazio. In quei casi usa un decodificatore che tenga conto dei moduli.
  • Separatori di percorso: codificare / qui lo trasforma in %2F. Se vuoi conservare la struttura reale del percorso, unisci prima i segmenti e codifica ciascuno separatamente.

Domande frequenti

È la codifica percentuale della RFC 3986, la forma rigorosa. Esegue l’escape di :, /, ?, # e degli altri caratteri riservati (oltre a !, ', (, ) e *) perché un componente non dovrebbe contenere al suo interno la struttura della URL. Questo lo rende più rigoroso dell’encodeURIComponent di JavaScript e molto più rigoroso di encodeURI.

%20 è il modo della RFC 3986. + per lo spazio è un’eredità della codifica del corpo application/x-www-form-urlencoded. Per le stringhe di query negli URL, %20 è sempre sicuro; + è previsto sul server solo quando è stato prodotto da un POST di modulo.

Ogni carattere viene prima codificato in UTF-8, poi viene sottoposto a escape ogni byte. Un carattere come 日 diventa %E6%97%A5 (tre byte).

No. Il valore viene codificato in percentuale sul server per costruire il tuo risultato e non viene memorizzato né registrato; nulla di ciò che incolli viene conservato una volta inviata la risposta.

Strumenti correlati

Strumento disponibile in altre lingue