为什么URL中的中文需要Encode两次?
Posted HapLe0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么URL中的中文需要Encode两次?相关的知识,希望对你有一定的参考价值。
在URL中传参的时候常常需要传入中文,这个时候就需要对中文参数进行编码,即URLEncode.但是,常常是Encode两次,而不是一次,为什么呢?
首先要知道,tomcat会自动解码一次;
这样的话,如果只Encode一次就传过去,会出现两种情况:
1.Tomcat的decode字符集与你Encode的字符集一致,正常显示中文;
2.decode与encode字符集不一致,乱码;
现在假设encode两次,那么:
tomcat解码一次,将encode一次的字符串传出去;
程序员手动decode一次,自主指定字符集,只要给定的字符集与编码时一致,就能够成功解码。
总结:encode两次是为了获取解码字符集的控制权,将解码字符集的设定从Tomcat设值中解放出来,下放到java代码中去,让程序员控制。
暂时只能了解到这里,后续再补。
附:搞清tomcat中的编解码 http://www.xuebuyuan.com/1287083.html
以上是关于为什么URL中的中文需要Encode两次?的主要内容,如果未能解决你的问题,请参考以下文章
为什麼encodeURI/encodeURIComponent()要调用两次来进行转码?