Codifica di tutti i caratteri speciali in Javascript
Devo codificare la stringa che ricevo qui e passarla come parametro URL, quindi non credo di poter passare una / o una parentesi (quindi considerando che ho la seguente stringa
KEY WEST / Florida(FL)
Sto provando quanto segue
encodeURIComponent("KEY WEST / Florida(FL)")
"KEY%20WEST%20%2F%20Florida(FL)"
escape("KEY WEST / Florida(FL)")
"KEY%20WEST%20/%20Florida%28FL%29"
Nessuno dei due sta codificando la stringa che posso decodificare in seguito nel mio codice poiché il primo mantiene il () e il secondo mantiene il /
Come faccio a farlo in un colpo solo e successivamente a decodificarlo quando necessario?
Inoltre sembra che escape () sia stato deprecato, quindi quale modo di codificare è preferito?
Risposte
Per URL codifica, encodeURIe encodeURIComponentfunzioni devono essere utilizzate.
encodeURIcodifica solo caratteri speciali, mentre encodeURIComponentcodifica anche caratteri che hanno un significato nell'URL, quindi viene utilizzato per codificare stringhe di query, ad esempio.
Le parentesi sono (come spiegato qui ), tuttavia, consentite ovunque nell'URL senza codificarle, ecco perché le encodeURIComponentlascia così come sono.
La escapefunzione può essere considerata deprecata e, sebbene ufficialmente non lo sia, dovrebbe essere evitata.
quindi in che modo si preferisce la codifica?
- Per interi URL, encodeURI
- Per le parti URL, ad es. Stringa di query del frammento, encodeURIComponent
Vedi anche Quando dovresti usare l'escape invece di encodeURI/ encodeURIComponent?