在URL中传递包含'%'的参数?

Naa*_*aaN 1 javascript url jsp

例如something:8000/something.jsp?param1=update&param2=1000&param3=SearchString%&param4=3,在传递我的网址时,我收到以下错误:

Bad Request

Your browser sent a request that this server could not understand.
Run Code Online (Sandbox Code Playgroud)

我知道SearchString%我需要传递哪个作为参数,有问题.那么如何在URL中传递包含'%'的参数?

arc*_*rty 8

使用%25代替%在URL中%%具有特殊含义作为转义字符

像(空格)这样的特殊字符可以编码为%20(空格的ascii代码/十六进制的32)

因此,百分号本身必须使用%的十六进制代码进行编码,该代码恰好为25

您可以使用http://www.asciitable.com/在hx列下查找相应的十六进制代码

另外,如果你是编程这样做(即用JavaScript),你可以使用内置函数escape()一样escape('%')

  • 另请参阅[比较escape(),encodeURI()和encodeURIComponent()"](http://xkr.us/articles/javascript/encode-compare/),其中讨论*为什么要避免`escape`*. (3认同)

ceg*_*ult 6

请参阅:在JavaScript中编码URL?

基本上你需要确保传递的变量是编码的('%'字符是URL编码中的特殊字符).

任何特殊字符 - %,?,&等...都需要进行编码.它们用'%'和十六进制数编码.所以'%'应该变成'%25','&'变成'%26'等等.

更新:看你何时应该使用escape而不是encodeURI/encodeURIComponent?为什么你应该避免使用逃生.