URL二次编码

浏览器端:【第一次编码(utf-8)】->【第二次编码(utf-8)】

到了服务器端,也就是容器端:【容器默认做一次解码(utf-8, gbk, iso-xxxx)】->【服务器端代码做一次 utf-8解码】

注意到编码的时候,第一次utf-8编码之后 得到的已经没有非ascii的其他字符了,都是ascii字符,这样再做一次utf-8编码就是对ascii字符做的utf-8编码。

在服务器端:因为第二次编码的时候是对ascii字符编码,所以解码的时候无论用什么方式(gbk、iso、utf-8)解码,得到的都是ascii码,因为这些编码方式都是兼容ascii编码的!

这样再在代码里做一次utf-8解码,就得到原始的字符了。

你可能会有疑问,两次编码的时候用的都是utf-8,解码的时候不对等为什么能解出来呢?

这里其实是有一个小技巧,就是几乎所有的编码方式都是兼容ascii编码的,所以解码的时候第一次用什么解码都无所谓,因为解码之后依然是ascii码。


 

转载于:https://my.oschina.net/kanlianhui/blog/1377312

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值