Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递包含';%的参数';在URL中?_Javascript_Jsp_Url - Fatal编程技术网

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

Javascript 传递包含';%的参数';在URL中?,javascript,jsp,url,Javascript,Jsp,Url,在传递我的url时,例如something:8000/something.jsp?param1=update¶m2=1000¶m3=SearchString%¶m4=3,我收到以下错误: Bad Request Your browser sent a request that this server could not understand. 我知道我需要作为参数传递的SearchString%存在问题。那么如何通过考试呢 URL中包含“%”的参数使用%25代替% 在

在传递我的url时,例如
something:8000/something.jsp?param1=update¶m2=1000¶m3=SearchString%¶m4=3
,我收到以下错误:

Bad Request

Your browser sent a request that this server could not understand.
我知道我需要作为参数传递的
SearchString%
存在问题。那么如何通过考试呢 URL中包含“%”的参数使用%25代替% 在URL中,%作为转义字符具有特殊含义

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

因此,百分号本身必须使用十六进制代码进行编码,该十六进制代码正好是25

您可以使用在hx列下查找适当的十六进制代码

或者,如果您是通过编程方式(即使用javascript)执行此操作,则可以使用内置函数
escape()
escape('%')
使用%25代替% 在URL中,%作为转义字符具有特殊含义

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

因此,百分号本身必须使用十六进制代码进行编码,该十六进制代码正好是25

您可以使用在hx列下查找适当的十六进制代码

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

基本上,您需要确保传递的变量已编码(在URL编码中,“%”字符是一个特殊字符)

任何特殊字符-%、?、&等。。。需要进行编码。它们用“%”及其十六进制数编码。所以“%”应该变成“%25”,而“&”应该变成“%26”,等等

更新:请参阅,以了解为什么应避免使用escape。

请参阅以下内容:

基本上,您需要确保传递的变量已编码(在URL编码中,“%”字符是一个特殊字符)

任何特殊字符-%、?、&等。。。需要进行编码。它们用“%”及其十六进制数编码。所以“%”应该变成“%25”,而“&”应该变成“%26”,等等


更新:请参阅为什么应避免使用escape。

为什么要通过%?您应该在服务器端附加它。看看为什么要传递%?您应该在服务器端附加它。请参阅(这是一件好事。请参阅,并避免在此处使用
escape
)。请参阅其中讨论了避免
escape
(这是一件好事。请参阅,并避免在此处使用
escape
)的原因。请务必使用编码器组件。最值得注意的是,它会转换转义留下的“+”。一定要使用encodeURIComponent。最值得注意的是,它转换“+”,而escape只剩下“+”。