java动态网页后台乱码问题总结
乱码可能出现的几块地方:
- 首先是浏览器和html之间采用的编码不一致
解决办法:
- 修改浏览器的编码格式
- 修改html页面的编码格式:
<meta http-equiv="content-Type" content="text/html;charset=utf8">
- jsp页面提交form表单时发生的乱码
解决办法:
- 修改jsp页面的编码格式:
<%@ page contentType="text/html;charset=utf8" pageEncoding="UTF-8"%>
此处的charset优先级比pageEncoding低,如果都没有设置,则默认为ISO-8859-1的编码格式。 - 还不行就设置jsp页面的request:request.setCharacterEncoding("utf8");
- 此外还可以修改后台页面如servlet:request.setCharacterEncoding("utf8");
- 修改jsp页面的编码格式:
- servlet向其他页面转发数据时发生的乱码
解决办法:
- 修改response:response.setCharacterEncoding("utf8");
- 向数据库传数据时的乱码
解决办法:
- 首先数据库编码要统一:1.建立数据库时加上CHARACTER SET 'utf8';2.建数据库表时后面加上:DEFAULT CHARSET=utf8;
- 其次要设置连接数据库时的编码: uri="jdbc:mysql://localhost/xxx?user=root&password=123456&useUnicode=true&characterEncoding=utf-8";
- 最后如果还有乱码,则有可能是插入数据时的参数位置没有一一对应。
- 除了以上几种,还有一种可能,就是IDE的字体编码问题。
- 另外,servlet和jsp之间传数据时有post和get两种方法,当用post时没有问题,但是当用get时需要加一个字符编码转换:
1 public String handleString(String s){ 2 try{ byte bb[]=s.getBytes("iso-8859-1"); 3 s=new String(bb); 4 } 5 catch(Exception ee){} 6 return s; 7 }
- 最后以上都未曾解决的话,还有一个绝招,就是字符编码过滤器了。
本人菜鸟,目测会有错误,原理也讲不清,以上只是我在遇到乱码时试过的所有办法,最终解决了所有乱码问题。 大神有见解请多多指教。谢谢~^_^