fastJson解析URL中特殊字符报错
1.楔⼦
在做消息推送的时候,突然报出⼀个fastJosn解析json错误的报错,了好久都终于发现是因为URL中含有特殊字符需要转义的字符&,导致JSON解析报错。
2.报错信息
⽹上搜索这个错误,⼤部分观点是JSON中含有特殊字符。还有⼈说是fastjson版本,字符串编码等问题,最后被逐⼀排除,定位到是含有特殊字符&
json⽂件中含有如下的URL:
3.解决⽅式
定位到时特殊字符后,然后在JSON中可能存在的特殊字符,可能是?、&等,最后⼈⾁战术,锁定是&搞的⿁。
解决⽅式是把&替换为%26
4.为什么需要Url编码
url编码处理通常如果⼀样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过⼤,包含隐私数据,对于Url来说,之所以要进⾏编码,是因为Url中有些字符会引起歧义。
例如Url参数字符串中使⽤key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc& ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和= 符号进⾏转义,也就是对其进⾏编码。(对value 字符串进⾏编码)
⼜如,Url的编码格式采⽤的是ASCII码,⽽不是Unicode,这也就是说你不能在Url中包含任何⾮ASCII字符,例如中⽂。否则如果客户端浏览器和服务端浏览器⽀持的字符集不同的情况下,中⽂可能会造成问题。
Url编码的原则就是使⽤安全的字符(没有特殊⽤途或者特殊意义的可打印字符)去表⽰那些不安全的字符。
5.如何对Url中的⾮法字符进⾏编码
6.参考⽂献

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。