您的位置:首页 > 数据库 > MySQL

mysql存入中文乱码

2015-06-13 10:19 483 查看
1、代码

public static void BatchUpdate(){

        String hqlUpdate="update User set username=? where username like ?";

        Session session=HibernateUtil.getSession();

        Transaction tx=session.beginTransaction();

        Query query=session.createQuery(hqlUpdate);

        query.setParameter(0, "马克");

        query.setParameter(1, "%mk%");

        int updateCount=query.executeUpdate();

        tx.commit();

        HibernateUtil.closeSession();

        log.info("============更新记录条数:"+updateCount+"=============");
    }

2、mysql数据库

字符集utf8 -- UTF-8 Unicode

排序规则utf8_general_ci

3、数据库链接驱动也要设置编码

jdbc:mysql://localhost:3306/tablename?useUnicode=true&characterEncoding=utf8

hibernate.cfg.xml里这样写

 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/tablename?useUnicode=true&characterEncoding=utf8</property>

mysql本身要设置好编码,这样才能按你的编码存数据。然后要通过jdbc驱动告诉jvm以指定的编码存数据

java本身是unicode的,如果驱动那里不设置,会按你平台的默认字符集,一般是gbk
p.s.工程text file encoding编码方式是utf8。Java虚拟机要正确加载代码里面的中文,就需要你告诉它应该以什么样的编码方式。

所以jdbc驱动告诉jvm存数据的编码方式和文本编码本身就是两码事

oracle,SQL server待续。。。
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: