关于Tomcat上请求的编解码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Tomcat上请求的编解码问题相关的知识,希望对你有一定的参考价值。

最近翻阅《深入分析 Java Web 技术内幕》(作者:许令波),关于Tomcat上Web请求的编解码问题,少了一个小点,可能影响了部分读者的理解,我特意查证了一下,特总结如下:

1. 请求的PathInfo部分用Tomcat的Connector元素的URIEncoding属性指定的编码来解码。

具体使用可参考:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html


2. 第二先说请求体(POST正文)的解析,Tomcat按下次顺序去获取字符编码:

  1)用户通过类似代码指定:<%request.setCharsetEncoding("utf-8")%>

  2) 请求报文content-type请求头指定的编码。

  3)应用web.xml配置的统一编码(这个目前在Servlet4.0规范中)

  4) 系统默认的ISO8859-1

  

3. 另外就是QueryString部分的解析,默认情况下Tomcat采用与1)相同的URIEncoding来解析QueryString。 但同时Tomcat提供了另一个参数useBodyEncodingForURI。字面意思用报文体编码来解析QueryString。  若该参数为true.则Tomcat采用与2)相同的编码来解析QueryString。



本文出自 “天下无贼” 博客,请务必保留此出处http://guojuanjun.blog.51cto.com/277646/1953674

以上是关于关于Tomcat上请求的编解码问题的主要内容,如果未能解决你的问题,请参考以下文章

Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能

CodecNotFoundException:未找到请求操作的编解码器:[日期 <-> java.util.Date]

像cssdeck这样的编解码功能[关闭]

未找到请求操作的编解码器:[map<varchar, int> <-> java.util.Map];发布 Apache Cassandra

视频的编解码-编码篇

python3中的编解码