Mysql中文乱码问题的解决

来源:互联网 发布:数据 战略资源 编辑:程序博客网 时间:2024/06/07 17:02

以前用eclipse开发Mysql数据库应用的时候解决过中文乱码的问题。当时的情况是:无论是用MySQL自带的控制台在插入数据时还是在elipse中通过自己编写的DAO实现数据插入时,中文都是会显示“?”,自己百度了一下,问题的原因是数据库和数据表创建时的默认编码应该没有设置成utf-8,当时我就在创建数据库表时在每张表后面加了对编码的设置,举个例子,就像下面这段数据库表创建语句:

create table t_stu(

StuNo char(12) NOT NULL,

StuName varchar(50) NOT NULL,

Sex char(2) NOT NULL,

Class varchar(50) NOT NULL,

StuMaj varchar(100) NOT NULL,

TotalGrade int(10) NOT NULL,

StuMail varchar(50) DEFAULT NULL,

StuPhone varchar(14) DEFAULT NULL,

PRIMARY KEY (StuNo)

)DEFAULT CHARSET = utf8;

这创建了一张学生表,最后一句是设置表的编码格式,如果不记得这些格式,可以随便找个数据表,在mysql控制台输入“show create table [table]”,[table]表示要查看的表,然后就会显示创建这张表时使用的语句,一般这样子就可以解决mysql数据库的中文乱码问题了。

但是,今天遇到了一个新的问题:在mysql的控制台或者SQLyog一些客户端插入,正常,不会出现中文乱码问题,但是如果在Myeclipse中用自己编写的DAO插入记录时,中文会变成“?”。首先按照以前遇到乱码的情况,把myeclipse的文本的编码检查了一遍,全都设为utf-8,再把mysql数据库中的默认编码都设为utf-8,结果问题还是没解决,最后百度到,有人说可以在JDBC连接mysql的url参数后面加编码的参数,可以解决,我尝试了一下,一开始的url是这样“jdbc:mysql://localhost:3306/stumis”,后来加了参数,变成这样“jdbc:mysql://localhost:3306/stumis?characterEncoding=UTF-8”,结果神奇的事情发生了,myeclipse上的DAO可以直接插入中文的记录而不发生乱码了,问题完美的解决了。

0 0