最近这两天改两个项目的bug,都遇到了中文乱码的问题,现将问题和解决方案都汇总于此,供大家参考。
如果最开始你把整个项目的编码和tomcat的编码都设置成一样,例如GBK或者GB2312或者UTF-8,应该前后方交互是不会出问题的,但是也会有出现像我这样中途给项目添功能,然后让中文乱码的,这就不知道什么原因导致的了,只知道怎么解决。
问题1:从后台传入前台中文乱码。
解决方案:在处理数据之前,在后台设置
response.setCharacterEncoding("UTF-8"); 这里的编码可以自己稍微试一下,常见的有utf-8,ISO-8859-1,GB2312
前台也要设置编码:在Head里面设置
<meta http-equiv="Content-type'' content=''text/html;charset=UTF-8">
问题二:从前台传入后台中文乱码
解决方案:这个问题就比较头疼了,我现在有三种问题可以解决。
1)设置request
request.setCharacterEncoding("utf-8");和设置response一样一样的。
2) 把字符转换成字符流的形式进行转码,把使用中文的字符串从前台拿到之后进行如下操作,里面的编码方式因人而异
new String(str.getBytes("gbk"),"utf-8");
3)使用StringUtil类进行转码
StringUtil有相关的方法:例如toGb()等就可以解决乱码问题。