黑猴子的家:Tomcat 修改编码方式

开篇废话

对于 URL 提交的数据和表单中 GET 方式提交的数据,在接收数据的 JSP 中设置 request.setCharacterEncoding 参数是不行的,因为在 Tomcat5.0 中,默认情况下使用ISO-8859-1 对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码(解码),而不使用该参数对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码(解码)。

要解决该问题,应该在 Tomcat 的配置文件的 Connector 标签中设置useBodyEncodingForURI 或者 URIEncoding 属性,其中 useBodyEncodingForURI 参数表示是否用 request.setCharacterEncoding 参数对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码,在默认情况下,该参数为 false (Tomcat4.0 中该参数默认为true );URIEncoding 参数指定对所有 GET 方式请求(包括 URL 提交的数据和表单中 GET 方式提交的数据)进行统一的重新编码(解码)的编码。

1、方式一

(1)默认配置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

(2)修改后配置
修改Tomcat下conf/server.xml 文件

[victor@hadoop102 ~]$ cd /opt/module/tomcat
[victor@hadoop102 tomcat]$ vim conf/server.xml

<Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
           URIEncoding="UTF-8"/>

(3)主要添加内容

 URIEncoding="UTF-8"

2、方式二

(1)默认配置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

(2)修改后配置
修改Tomcat下conf/server.xml 文件

[victor@hadoop102 ~]$ cd /opt/module/tomcat
[victor@hadoop102 tomcat]$ vim conf/server.xml

<Connector port="8080" useBodyEncodingForURI="true"
               protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

(3)主要添加内容

useBodyEncodingForURI="true"

(4)思想
添加 useBodyEncodingForURI 属性,useBodyEncodingForURI 参数表示是否用 jsp 中 request.setCharacterEncoding 参数对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码

3、URIEncoding 和 useBodyEncodingForURI 区别

URIEncoding 是对所有 GET 方式的请求的数据进行统一的重新编码(解码),而 useBodyEncodingForURI 则是根据响应该请求的页面的request.setCharacterEncoding 参数对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码

所以对于 URL 提交的数据和表单中 GET 方式提交的数据,可以修改 URIEncoding 参数为浏览器编码或者修改 useBodyEncodingForURI 为true ,并且在获得数据的 JSP 页面中 request.setCharacterEncoding参数设置成浏览器编码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容