tomcat 字符编码解决方案

来源:互联网 发布:mysql 模糊查询 编辑:程序博客网 时间:2024/06/05 04:53

在进行web开发时,总是会遇到中文乱码的问题。大家可以参考我的“向数据库插入中文时乱码”http://blog.csdn.net/yiluxiangqian7715/article/details/45066365的博文。本来已经解决了中文乱码的问题,但最近又遇到一个问题:更换系统后按以前的方式设置好了各处的编码后,原来本来没问题的项目竟然出现了乱码问题,这个问题主要出现在get请求中。因此,在网上找到了一个解决方案。
在HTTP/1.1协议连接器配置上加上编码处理:

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

useBodyEncodingForURI:在默认情况下,该参数为false。useBodyEncodingForURI是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码。

另外还可以设置URIEncoding="指定编码",但不是很好的方法,如果tomcat有多个项目,每个项目编码不同,则行不通。

URIEncodinguseBodyEncodingForURI区别是,URIEncoding是对所有GET方式的请求的数据进行统一的重新编码(解码),而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码。
所以对于URL提交的数据和表单中GET方式提交的数据,可以修改URIEncoding参数为浏览器编码或者修改useBodyEncodingForURI为true,并且在获得数据的JSP页面中request.setCharacterEncoding参数设置成浏览器编码。

说明:此处是默认大家其他地方的编码问题已经解决,如有问题可参照上面提到的博文。

附加解释:
1、pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。如果JSP文件是以GBK为编码保存的,而在JSP中却指定pageEncoding="UTF-8",会引起JSP内部定义的字符串为乱码。
2、contentType="text/html;charset=utf-8"的作用是指定对服务器响应进行重新编码。
3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码。
4、response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。

0 0
原创粉丝点击