weixin_42198439
2008-06-15 13:51 阅读 215
已采纳

真头疼 终极乱码 。。。(MySQL5 + Hibernate)

首先是MySQL 5
我把SQL语句写入 一个schema.sql 文件中 ;

create ...
insert into XX values( '中文 ' ... );

然后新建一run-schema.bat
mysql -uroot < "D:\xxx.sql"

(一)
当设置MySQL默认编码是 latin1 时 执行正常,
但用Hibernate 执行查询时就显示乱码了:

从网上找的资料把 hibernate.cfg.xml 中添加 useUnicode=true&characterEncoding=utf8 时乱码依旧 。。

(二)
当把MySQL 设置成UTF8 编码时,执行run-schema.bat 导入 sql 语句时
MySQL 就报错 Data too long at column X 。。

然后从网上找的资料在sql 文件中添加
set names utf8;
依旧报错。 data too long 。。

再在 bat 文件中添加
mysql -uroot --default-character-set=utf8 < "D:xxx.sql"
.. 依旧 data too long 。。

(注:bat ,及 sql 文件都是用的 utf-8 编码方式)

在第一种情况中 把Hibernate从数据库中查询出的字符串从latin1 换到 utf-8 后能正常显示 ,不过每次都用String 转换也够麻烦的 有一劳永逸的方法吗 ?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    wangxin0072000 wangxin0072000 2008-06-16 10:18

    找到MySQL加载的my.ini文件,这个文件的位置可以从start.bat中找到。
    之后增加如下:
    [code="java"]
    [mysql]
    default-character-set=utf-8
    [/code]

    之后进入mysql控制台输入如下:
    [code="java"]show variables;[/code]看看数据库的字符集是否是utf8了。
    如果是那么就从新倒一次数据。
    如果不成功,就是你数据有问题了。

    点赞 评论 复制链接分享
  • idkkk idkkk 2008-06-15 18:56

    将数据库的字符集设置为UTF-8,如果你写的是web程序,则设置filter的编码为UTF-8,useUnicode=true&characterEncoding=utf8 可以不需要在jdbc的URL后追加

    点赞 评论 复制链接分享
  • iteye_15036 iteye_15036 2008-06-16 00:11

    重新配置MYsql 编码不就可以解决此问题,但你的数据库需重新增一次,

    点赞 评论 复制链接分享
  • liguodong_sz liguodong_sz 2008-06-16 13:55

    同意楼上的说法,我的就是将mysql中的my.ini文件中的default-character-set改为default-character-set=gbk就没有问题了。

    点赞 评论 复制链接分享
  • zzzyjavabc zzzyjavabc 2008-06-16 19:14

    将数据库的字符编码设置为与MYSQL一样的编码,如果是web程序,则可以在filter中设置编码,

    点赞 评论 复制链接分享

相关推荐