首先我们得知道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;

posted on 2012-04-06 18:21  haoxx  阅读(579)  评论(0编辑  收藏  举报