为什么要URLEncode

        URL 的构成字符必须是可写的 ASCII 字符。那么,什么是  ASCII 字符?请自己查看百度百科了解一下:https://baike.so.com/doc/7103239-7326232.html

        回到主题,为什么我们在很多时候,或者调用第三方接口的时候,需要对 URL 进行 Encode 编码,因为在我们的 URL 中可能会涉及中文、特殊字符等 “不合法” 的字符,这些特殊字符在解析时会出现程序的歧义。会将这些字符被视为不安全的字符,原因有很多。下面列举一二:

不安全字符: 

  • 空格:URL 在传输的过程,或者用户在排版的过程中,或者文本处理程序在处理URL的过程,都有可能引入无关紧要的空格,或者将有意义的空格给去掉。
  • 引号以及 <>:引号和尖括号通常用于在普通文本中起到分隔URL的作用。
  • #:通常用于表示书签或者锚点。
  • %:百分号本身用作对不安全的字符进行编码是使用的特殊字符,因此本身需要编码。
  • { } | \ ^ [ ] ’ ~:某一些网关或者传输代理会篡改这些字符 

温馨提示:对于 URL 中的合法字符,编码和不编码是等价的,但是对于上边提到的这些字符,如果不经过编码,那么它们可能会造成 URL 语义的不同。因此对于URL而言,只有普通英文字符和数字,特殊字符 $ - _ . + ! * ’ ( ) 还有保留字符,才能出现在未经编码的 URL 中,其他字符均需要编码之后才能出现在 URL 中。 
 

如何对URL中的非法字符进行编码?

Java中我们可以使用Encode工具类等等,这里为了演示 URLEncode 效果,我们可以使用第三方的在线工具:比如:

http://www.jsons.cn/urlencode

输入一个URL,点击 UrlEncode编码,我们可以得到编码后的 URL,这样我们在请求中就不会产生因为 URL 不合法而出现的程序异常了。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值