URL中的特殊字符

 我来答
天罗网17
2022-06-07 · TA获得超过6162个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:71.8万
展开全部
问题场景:
经过Base64转码后的字符串常常包含“+”号,拼接为URL(如param1= test+1 )后,服务端获取到的值是错误的(通过reuqest.‍getParameter("param1")‍得到 test 1 )。

错误原因:
“+”在URL中是特殊字符,特殊字符在URL中不能直接传递,使用的话需要使用它们的编码。
编码的规则是前面一个百分号%,后面是对应字符的ASCII(16进制)码值。例如空格的编码值是"%20"。以下为url的特殊字符和它们的特殊含义以及对应编码。
1) + URL 中+号表示空格 %2B
2) 空格 URL中的空格可以用+号或者编码 %20
3) / 分隔目录和子目录 %2F
4) ? 分隔实际的 URL 和参数 %3F
5) % 指定特殊字符 %25
6) # 表示书签 %23
7) & URL 中指定的参数间的分隔符 %26
8) = URL 中指定参数的值 %3D

解决办法:
a. 修改客户端,将客户端带“+”的参数中的“+”全部替换为?“2B%”,这样参数传到服务器端时就能得到“+”了。
b. 修改服务器端,将空格替换为“+”,这种方式只适用于参数中有?“+”没有空格的情况。

备注:
js中使用encodeURIComponent和decodeURIComponent进行特殊字符的编码和解码。
java中使用 URLEncoder.encode和URLDecoder.decode进行特殊字符的编码和解码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式