web开发字符乱码问题

java动态网页后台乱码问题总结

乱码可能出现的几块地方:

  1. 首先是浏览器和html之间采用的编码不一致
    解决办法:
    • 修改浏览器的编码格式
    • 修改html页面的编码格式:
      <meta http-equiv="content-Type" content="text/html;charset=utf8">
  2. 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");
  3. servlet向其他页面转发数据时发生的乱码
    解决办法:
    • 修改response:response.setCharacterEncoding("utf8");
  4. 向数据库传数据时的乱码
    解决办法:
    • 首先数据库编码要统一:1.建立数据库时加上CHARACTER SET 'utf8';2.建数据库表时后面加上:DEFAULT CHARSET=utf8;
    • 其次要设置连接数据库时的编码: uri="jdbc:mysql://localhost/xxx?user=root&password=123456&useUnicode=true&characterEncoding=utf-8";
    • 最后如果还有乱码,则有可能是插入数据时的参数位置没有一一对应。
  5. 除了以上几种,还有一种可能,就是IDE的字体编码问题。
  6. 另外,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    }
  7. 最后以上都未曾解决的话,还有一个绝招,就是字符编码过滤器了。

本人菜鸟,目测会有错误,原理也讲不清,以上只是我在遇到乱码时试过的所有办法,最终解决了所有乱码问题。 大神有见解请多多指教。谢谢~^_^

原文地址:https://www.cnblogs.com/sylvialucy/p/5067984.html