URL特殊字符的编码和转义

    项目中遇到的小问题,让我去详细看了下URL特殊字符的编码和转义, 问题是这样的,我一个方法中通过第三方api接口,获取代币token的当前价格,例如获取eth价格直接浏览器输入是http://xxxxxxx:8094?tokenName=ethereum, 在方法中是通过HttpUrlConnection传入url来获取的,但是tokenName有可能带有空格,比如Binance Coin,这个时候就会报错了,原因是空格是特殊字符,需要转义字符代替,空格的转义字符是%20。

    URL是可移植资源,各种不同网络协议解析URL资源需要做到统一识别,RFC标准规定,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号,我们知道通用的字节编码是ASCii,为了使所有字符都能被覆盖,就要用ASCii涵盖的转义字符来表示特殊字符,打一个外行比喻,比如一个传输系统不支持汉子,只支持英文,那我要传输‘爱’这个字,就只能用love来代替,love就是‘爱’的转义字符,所以对于空格来说,ASCii表中对应的16进制是20,URL编码规范是%+16进制,也就是%20,它就空格的转义字符,就代表了空格。其他特殊字符也是如此。

    所以以后对于编码中涉及到的url处理,一定要考虑是否会出现特殊字符,如果有这种情形,考虑转义。

参考http权威指南P38(各种令人头疼的字符)

参考阮一峰文章:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值