对 Javascript 中的所有特殊字符进行编码

Encoding all the special characters in Javascript

我必须对我在此处收到的字符串进行编码并将其作为 URL 参数传递,因此我认为我无法传递 / 或括号(因此考虑到我有以下字符串

KEY WEST / Florida(FL)

我正在尝试以下方法

encodeURIComponent("KEY WEST / Florida(FL)")
"KEY%20WEST%20%2F%20Florida(FL)"

escape("KEY WEST / Florida(FL)")
"KEY%20WEST%20/%20Florida%28FL%29"

它们都没有编码我稍后可以在我的代码中解码的字符串,因为第一个保留 () 而第二个保留 /

如何在一次拍摄中完成此操作,然后在需要时对其进行解码?

另外,escape() 似乎已被弃用,因此首选哪种编码方式?

对于URL编码,应该使用encodeURIencodeURIComponent函数。

encodeURI只对特殊字符进行编码,而encodeURIComponent也对URL中有意义的字符进行编码,因此用于对查询字符串进行编码,例如。

括号是(如 here 所解释的),但是,允许在 URL 中的任何位置而不对它们进行编码,这就是 encodeURIComponent 保持原样的原因。

escape 函数 can be considered deprecated,虽然它正式不是,但应该避免。


so which way to do the encoding is preferred?

另请参阅 您什么时候应该使用转义而不是 encodeURI / encodeURIComponent