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处理的。

Java程序员遇上字符乱码14-tomcat如何解析url编码的键值对_第1张图片

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

Java程序员遇上字符乱码14-tomcat如何解析url编码的键值对_第2张图片

你可能感兴趣的:(Java程序员遇上字符乱码14-tomcat如何解析url编码的键值对)