首先是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 转换也够麻烦的 有一劳永逸的方法吗 ?
找到MySQL加载的my.ini文件,这个文件的位置可以从start.bat中找到。
之后增加如下:
[code="java"]
[mysql]
default-character-set=utf-8
[/code]
之后进入mysql控制台输入如下:
[code="java"]show variables;[/code]看看数据库的字符集是否是utf8了。
如果是那么就从新倒一次数据。
如果不成功,就是你数据有问题了。
将数据库的字符集设置为UTF-8,如果你写的是web程序,则设置filter的编码为UTF-8,useUnicode=true&characterEncoding=utf8 可以不需要在jdbc的URL后追加
重新配置MYsql 编码不就可以解决此问题,但你的数据库需重新增一次,
同意楼上的说法,我的就是将mysql中的my.ini文件中的default-character-set改为default-character-set=gbk就没有问题了。
将数据库的字符编码设置为与MYSQL一样的编码,如果是web程序,则可以在filter中设置编码,