经常在论坛中看到朋友遇到中文乱码的问题而不知所措,本人以自己在项目中常遇到的中文乱码问题及解决方法,小结一下,希望能对朋友有所帮助,如有不足,请指正。
总的归纳有以下几个方面:
一、在表单正常提交后,页面显示出乱码。
解决方法:
1、如果是直接jsp页面提交到别外一个jsp页面,或jsp提交到servlet,可以在jsp或serlet的doPost()或doGet()方法设置编码转换,将请求后的数据转成中文,并在输出时也设置为中文如:
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
2、设置过滤器(推荐方法):
写一个过滤器类,并且建议写在静态类,方便调用,如下:
并在web.xml作如下配置:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.crm.filter.EncodingFilter</filter-class>(说明:此为类路径)
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
二、如果为url后在跟的参数为中文,如:xxx.do?name=你好,或采用自动跳转链接时,后面跟的提示信息含有中文。
解决方法:
1、可以写个类,进行转换如:
2、在tomcat的server.xml做以下配置:
<Connector port="8099" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
三、ajax提交出现在乱码。
解决方法:以上二种方法基本可以解决。
四、文件上传时文件名出现乱码。
解决方法:在上传时,先对文件名进行编码设置,可以采用此方法:
例:paramMap.put(fi.getFieldName(), new String(fi.getString().getBytes("ISO-8859-1"),"GBK"));
五、有时数据库插入数据时出现的乱码:
解决方法:
可以在struts中的Form类中添加个方法就行
public void reset(ActionMapping arg0, HttpServletRequest arg1) {
try{
arg1.setCharacterEncoding("gbk");
}catch(Exception e){
e.printStackTrace();
}
}
知识浅陋,总结到此,请高手多指正及补充。