工作积累(七)——Tomcat URIEncoding引起的中文乱码问题

J2EE 中用到了中文搜索,在后台接到的前台数据中出现了乱码,采用如下方式进行转码:

try {
  keyword = new String(cond.getKeyword().getBytes("iso-8859-1"),"utf-8");
} catch(UnsupportedEncodingException ex) {
  ex.printStackTrace();
}

这样在本地部署测试时解决了中文乱码导致的查询失败问题,然而当将项目部署到测试服务器上时却依然不起作用。由于除了中文,英文和数字可以搜索成功,因此可以推测依然是字符集问题。考虑到在前台发送Ajax 请求开始查询时仍未到达数据库,基本可以排除数据库字符集方面的配置问题,由于水平所限一直未能想到其他原因。后来发现在 Tomcat 中也有字符集的设置问题,经过比对,发现果然是因为本地与测试服务器Tomcat 配置不同而导致。

默认情况下,Tomcat 所采用的字符集为 iso-8859-1

<!-- 省略字符集声明,默认为 iso-8859-1-->
<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="18443" />

而服务器上的Tomcat 配置如下:

<!-- 声明字符集 -->
<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="18443"
    URIEncoding="UTF-8" />

修改过URIEncoding 后,问题解决。以后如果出现中文乱码问题,而数据库设置正常,应该想到确认 Tomcat 所使用的字符集。

完。

 

参考资料:

http://blog.csdn.net/hongqishi/article/details/7428380

本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1662527

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章