hibernate + mysql 查询 中文字符窜数据 出现乱玛 "?" 怎么解决!!听有人说 要改数据库的字符编码就可以了 怎么在 myeclipse 中设置;如果不行  还有什么办法  越简单越好, 我是在 hibernate 项目中调用 mysql;

解决方案 »

  1.   

    hibernate要和mysql一样的字符集
      

  2.   

    你的情况说的不清楚啊。
    我分析下
         一你的数据库里原本的中文是乱码(可能姓不大),没办法解决。
         二 数据库的中文以及查询都正确,就是输出中文的时候变乱码,解决方法
           在jsp中加入 <%@ page language="java" pageEncoding="GBK"%>
        三 数据库的中文以及输出都正确,就是用关键字中文查询有问题,解决方法,过滤器
      建立过略器
      package filter;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;public class setGBK implements Filter { public void destroy() {
    // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    arg0.setCharacterEncoding("GBK");
    arg2.doFilter(arg0, arg1); } public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub }}
    在配置文件 web.xml中配置过滤器
     <filter>
          <filter-name>setGBK</filter-name>
          <filter-class>filter.setGBK</filter-class> 
          
      </filter>
      <filter-mapping>
          <filter-name>setGBK</filter-name>
          <url-pattern>*.do</url-pattern>
      </filter-mapping>
     <url-pattern>*.do</url-pattern>看你自己的需要也可以配置
      

  3.   

    在hibernate的配置中试下这样:
    <property name="connection.url">
    jdbc:mysql://localhost:3306/hunantour?useUnicode=true&amp;characterEncoding=GBK
    </property>
      

  4.   

    设置URL为
    jdbc:mysql://localhost:3306/em?useUnicode=true&amp;characterEncoding=gbk
    就可以了
      

  5.   

    对,把的数据库的编码方式和前台的显示页面,处理数据的编码方式统一为gbk试试
      

  6.   

    楼主回复:   我现在不是在jsp 中调用查询语句; 我现在是在学习 Hibernate 所以我是在 java 代码中用hibernate 提供的接口 
       调用mysql 的表, 表中的数据肯定是中文 类型是 varchar, 所以上面有人说的+ filter 或者+一条什么JSP标签的都行不
       通, 还有
       在hibernate的配置中试下这样: 
    <property name="connection.url"> 
    jdbc:mysql://localhost:3306/hunantour?useUnicode=true&amp;characterEncoding=GBK 
    </property>  也不行 试过了,我的java 代码是:
    public class query_test extends TestCase{
    public void query1() {
    Session session = HibernateUtil.getSession();
    try {
    session.beginTransaction();
    Query query = session.createQuery("select name from Class1");
    List list = query.list();
    for(Iterator ite = list.iterator(); ite.hasNext();) {
    String name = (String) ite.next();
    name = new String(name.getBytes("iso-8859-1"), "gb2312");
    System.out.println(name);
    }
    session.getTransaction().commit();
    }catch(Exception e) {
    e.printStackTrace();
    session.getTransaction().rollback();
    }finally {
    HibernateUtil.closeSession(session);
    }
    }
    }
    这是mysql表:
    +----+----------------+
    | id | name           |
    +----+----------------+
    |  1 | 班级1          |
    |  2 | 班级2          |
    |  3 | 班级3          |
    |  4 | 班级4          |
    |  5 | 班级5          |
    |  6 | 班级6          |
    |  7 | 班级7          |
    |  8 | 班级8          |
    |  9 | 班级9          |
      

  7.   

    楼主 回复:  问题解决了 要把数据库和 java 的字符集 都设置成 GBK 其他什么都不改  谢谢大家的回答!!