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

时间:2012-09-12 04:30:05

标签: javascript jsp url

在传递我的网址时,例如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.

我知道我需要传递的SearchString%作为参数,有问题。然后如何通过 URL中包含'%'的参数

2 个答案:

答案 0 :(得分:7)

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

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

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

您可以使用http://www.asciitable.com/在hx列

下查找相应的十六进制代码

或者,如果您以编程方式(即使用javascript)执行此操作,则可以使用内置函数escape(),如escape('%')

答案 1 :(得分:6)

请参阅:Encode URL in JavaScript?

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

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

更新:请参阅When are you supposed to use escape instead of encodeURI / encodeURIComponent?了解您应该避免使用转义的原因。