日期:2014-05-17  浏览次数:20783 次

jsp从数据库调出中文乱码
数据库编码是utf-8
jsp页面也是utf-8
数据库加载后面也添加编码也不好使
好像我数据库改完编码好像重启就不好使了呢
我控制台输出下 是乱码、

HTML code

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.util.*"%>
    <%@ page import="mySql.Sqlconnection" %>
    <%@ page import="action.ListAction" %>
    <%@ page import="user.UserManager" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% Sqlconnection conn=new Sqlconnection();
     List<UserManager> cag;
     cag=conn.list(); %>
<!-- 循环遍员工姓名等 -->
</body>
</html>





数据库连接的查看方法
Java code

public List<UserManager> list(){
        Connection conn =this.getConnection();//使用当前连接数据库方法
        List<UserManager> cag=new ArrayList<UserManager>();//UserManager为一个成员属性类getter setter
        try {
            PreparedStatement ps = conn.prepareStatement("select * from staff");
            ResultSet rs =ps.executeQuery();
            
            while(rs.next()){
                UserManager u=new UserManager();
                u.setStaff_ID(rs.getString("staff_ID"));
                u.setStaff_Name(rs.getString("staff_Name"));
                u.setStaff_Birth(rs.getString("staff_Birth"));
                u.setStaff_IDcard(rs.getString("staff_IDcard"));
                u.setStaff_CallNumb(rs.getString("staff_CallNumb"));
                cag.add(u);
                System.out.println(u.getStaff_Name());//这个输出就是乱码
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        close(null, null, conn);
        
            
        return cag;
    }


mysql5.0.0+tomacat 6+eclipse 
mysql我之前改了很多次总是变回来、my.ini我没那文件、自己配个也不知道读取没


set names "utf8"; //设置编码

show variables like "%char%"; //一重启又回来了


  | character_set_client | Latin1|

  | character_set_connection | Latin1|

  | character_set_database | Latin1|

  | character_set_results | Latin1|

  | character_set_server | Latin1|

  | character_set_system | utf8 |

  | character_sets_dir | /usr/share/mysql/charsets/ |



问题:我用jsp显示数据库的名字属性是乱码 数据库调出显示后台就已经是乱码了、struts2的、如何解决、
  附问:个比较白痴的、就是有时候项目已经运行好的、之后在启动会报错  
是什么问题呢

------解决方案--------------------
response.setContentType("GBK");
------解决方案--------------------
写个过滤器,配置在web.xml中,对处理字符进行编码