Codierung aller Sonderzeichen in Javascript
Ich muss die Zeichenfolge, die ich hier erhalte, codieren und als URL-Parameter übergeben, damit ich nicht glaube, dass ich entweder / oder eine Klammer übergeben kann (wenn ich bedenke, dass ich die folgende Zeichenfolge habe
KEY WEST / Florida(FL)
Ich versuche Folgendes
encodeURIComponent("KEY WEST / Florida(FL)")
"KEY%20WEST%20%2F%20Florida(FL)"
escape("KEY WEST / Florida(FL)")
"KEY%20WEST%20/%20Florida%28FL%29"
Keiner von beiden codiert die Zeichenfolge, die ich später in meinem Code dekodieren kann, da der erste das () und der zweite das / behält
Wie mache ich das auf einmal und dekodiere es zu einem späteren Zeitpunkt bei Bedarf?
Es scheint auch, dass Escape () veraltet ist. Welche Art der Codierung wird bevorzugt?
Antworten
Für URL - Codierung encodeURIund encodeURIComponentFunktionen verwendet werden sollen.
encodeURIcodiert nur Sonderzeichen, während encodeURIComponentauch Zeichen codiert werden, die eine Bedeutung in der URL haben, sodass sie beispielsweise zum Codieren von Abfragezeichenfolgen verwendet werden.
Klammern sind (wie hier erläutert ) jedoch an einer beliebigen Stelle in der URL zulässig, ohne sie zu codieren. Deshalb bleiben sie unverändert encodeURIComponent.
Die escapeFunktion kann als veraltet angesehen werden , und obwohl dies offiziell nicht der Fall ist, sollte sie vermieden werden.
Welcher Weg zur Codierung wird bevorzugt?
- Für ganze URLs encodeURI
- Für URL-Teile, z. B. Abfragezeichenfolge eines Fragments, encodeURIComponent
Siehe auch Wann solltest du Escape anstelle von encodeURI/ verwenden encodeURIComponent?