Java程序员遇上字符乱码14-tomcat如何解析url编码的键值对

从前面的介绍Url编码文章中,我们了解了浏览器发起请求的字符处理过程。现在开始介绍tomcat服务器对键值对进行Url解码的过程。

源码都在这里:

org.apache.tomcat.util.http.Parameters#processParameters(byte[], int, int, java.nio.charset.Charset)

下面我们分析下其源码:

我们那 "a=b&%你a=%我" 做例子,浏览器发起请求前会将它url编码成如下:

a=b&%25%E4%BD%A0a=%25%E6%88%91

1)先看其如何解析出键值对 中的“键”和“值”。源码 如下:

tomcat主要是对关键的字符 ‘=’、‘&’和‘+’ 进行分析从而分割出“键” 和 “值”。在这里,我们可以很容易看出,tomcat对‘%’是直接跳过 不处理的。也就是说,浏览器Url编码后的键值对中的 ‘%’ 是不被tomcat处理的。

我们可以往下看:tomcat 在上面过程中提取出  ‘键’:“%25%E4%BD%A0a”  和  ‘值’:“%25%E6%88%91” 后,分别进行url解码。然后存入Map中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容