Javascript 传递包含';%的参数';在URL中?
在传递我的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代替% 在
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只剩下“+”。