`
缠小溪
  • 浏览: 23830 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

servlet中文乱码问题及解决

 
阅读更多

一、常识了解

1、GBK包含GB2312,GB2312编码的可以通过GBK解码,但反之不成立
2、java.nio.charset.Charset.defaultCharset()获得平台默认字符编码

二、中文乱码出现

servlet乱码分为request乱码和response乱码,一般都是浏览器和程序的编码不一致导致的

三、response中文乱码

response.setContentType("text/html;charset=utf-8");设置浏览器端编码为utf-8解决浏览器解码不一致问题
response.setCharacterEncoding("utf-8");设置response.getWriter输出流的编码控制,将response中的对象数据以utf-8编码后发给浏览器
中文乱码原因剖析:

四、request中文乱码问题

request请求分为post和get,对于不同的请求方式,有不同的乱码解决方案
1、post请求乱码
浏览器将提交的数据以自身默认的编码方式编码,通过request对象传递到服务器,服务器通过默认的编码iso-8859-1解码,造成乱码
解决方法:设置request的编码方式和浏览器的一致,即request.setCharacterEncoding("utf-8");
2、get请求乱码
get提交的乱码可以通过如下方法解决:
value=new String(name.getBytes("ISO-8859-1","gb2312"));

五、数据库(MySQL)写入乱码

在解决了以上乱码问题之后,插入数据库时有出现乱码,可见是在写入数据库是出现了编码不一致问题,可以在链接数据库的时候设置数据库编码一致
static String DB_URL = "jdbc:mysql://localhost:3306/zywbbs?useUnicode=true&characterEncoding=utf-8";

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics