前段时间用Java web技术做了一个小小的微博系统,在做的过程中发现了许多中文乱码问题,一下是避免乱码问题的几点建议:
1、在整个系统开发过程中,从前端到后台必须采用统一的中文编码方式,如gb2312,UTF-8等,否则会出现意想不到的系统错误。
(1)、在JSP页面中设置编码方式,<% @ page contentType = " text/html;charset=gb2312 " %>
或者在server.xml配置文件来实现。
< Connector port ="8080" maxHttpHeaderSize ="8192"
maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75"
enableLookups ="false" redirectPort ="8443" acceptCount ="100"
connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="gb2312" />(2)、在servlet中设置编码方式:request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
(3)、在创建数据库时选择中文编码方式gb2312或utf-8。
2、在提交表单或页面跳转时,如果通过URL传值,则只能传递英文或数字,否则在后台你将无法获取你期望的值。如果采用这种传值方法:
解决方法:首先将得到的值要再用iso-8859-1编码得到原文后,再进行用utf-8(看具体页面的charset是什么utf-8或gbk)进行解码即可。new String(strCn.getBytes(“ISO-8859-1”),“UTF-8”)。
3、数据库乱码问题,如果采用MySQL数据库,那么他的默认编码是拉丁文,第一种解决方法是打开数据库的配置文件my.ini,将编码方式改为utf8,或gb2312;第二种方法是通过JDBC直接链接数据库的时候,配置的代码如下:jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK,这样将会避免中文乱码问题。