首先我们得知道Mysql是瑞典一家公司开发的,因此他的默认编码是lanti1,所以有人在查询数据库表的时候会遇到显示中文乱码的问题,比如说我用Myeclipse的da
ta explorer去查看数据库表的时候就出现了乱码。究其原因是数据库传给他的编码和自身编码不一致,也就是说Mysql传过来的是lanti1编码的数据,我在Myeclipse接受时采用的是gbk,所以出现乱码。
我的解决办法是,先指定数据库的字符集,具体可以创建数据库时,为其指定,比如:
create table kind(
kind_id int(11) auto_increment,
kind_name varchar(50) not null,
kind_desc varchar(255) not null,
primary key(kind_id)
)TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
其中后面的TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
就是指定数据库的字符集,COLLATE (校勘),让mysql同时支持多种编码的数据库。
并且设置Mysql客户端以gbk格式发送,命令为:set names ' gbk';
此外我们还要在接收这些查询数据时设置对应的字符集,比如说我在Myeclipse中为Mysql数据驱动时就这样写
jdbc:mysql://localhost:3306/auction?useUnicode=true&characterEncoding=gbk
这样就设置了MyEclipse在接收Mysql数据时采用gbk编码。
当然你也可以采用其它不同的编码方式:utf-9,ISO-8859-1等等,只要mysql与Myeclipse对应就行。
具体的字符集你可以通过mysql的命令查询:SHOW CHARACTER SET;