在Javascript中编码所有特殊字符

在Javascript中编码所有特殊字符,javascript,encoding,utf-8,character-encoding,Javascript,Encoding,Utf 8,Character Encoding,我必须对我在这里接收到的字符串进行编码,并将其作为URL参数传递,这样我就不相信我可以传递任何一个/或一个偏执(因此考虑到我有以下字符串 KEY WEST / Florida(FL) 我正在尝试以下方法 encodeURIComponent("KEY WEST / Florida(FL)") "KEY%20WEST%20%2F%20Florida(FL)" escape("KEY WEST / Florida(FL)") "

我必须对我在这里接收到的字符串进行编码,并将其作为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编码,应使用
encodeURI
encodeURIComponent
函数

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

然而,括号(如上所述)在URL中的任何位置都可以不编码,这就是为什么
encodeURIComponent
保持其原样的原因

escape
功能,虽然官方没有,但应该避免


那么,哪种编码方式是首选的呢

  • 对于整个URL
  • 对于URL部分,例如片段的查询字符串

另请参见

您需要在哪里解码?encodeURIComponent应将其设置为后端服务器应具有预先存在的逻辑以了解如何解码的格式。如果
encodeURIComponent
离开
()
仅此一项,您就可以确信字符不需要编码;这就是重点。它不适用于我的应用程序。我的AngularJS路由器无法识别编码的字符串。如果我输入一个纯文本,如just Key West,它工作得很好。只是添加了一点关于它如何破坏我的AngularJS路由器的详细信息n我尝试使用encodeUriComponent传递参数,因此当我尝试使用其中一个并将其传递到路由器时,它会破坏AngularJS路由并抛出404。我将它作为参数传递。当('/myedpoint/:param?',{templateUrl:'components/test/testPage.html',controller:'TestPageController'})接受这个答案,因为这在技术上是我最初要求的,这是一个非常准确和详细的答案,但是如果你有兴趣看的话,我创建了另一张票