Codierung aller Sonderzeichen in Javascript

Nov 10 2020

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

1 FZs Nov 10 2020 at 22:23

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?