哎,没想到啊,这几次做项目都每次使用mysql的时候,都需要去解决mysql的中文乱码问题,而且到处去网上找资料,这次我都找烦了,所以就把我遇到的的连接mysql的解决方案全部写出来一下。
1.首先mysql的默认字符编码是:latin1
2.中文乱码一般出现的问题:数据库的字符编码没有设置,表的编码设置,编译器的字符编码。而需要重点注意的是,这三个地方的字符编码都需要一直。这次我使用的项目是GBK,而数据库是UTF8,结果导致我写入数据,一直都是错误的,所以要注意这三地方的字符编码一直、、、
修改数据库的字符编码:其中db和table是数据库和表的名字
ALTER DATABASE db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
2.连接数据库的时候设置字符连接:
String url = "jdbc:mysql://localhost/" + dbname + "?useUnicode=true&characterEncoding=utf-8";
一般通过这些方法就可以完全解决数据库的编码问题,当然有的时候通过mysql的控制台select出来的数据还是乱码,当然的啦,因为cmd的字符编码是GBK,而数据库读取出来的数据式UTF-8的。所以可能会出现乱码,但是在数据上面一点错的没有的哈。。。。但是如果你想解决的话,就让数据库使用gbk吧,哈哈
----------------------------------------------------------------------------------------------------------------
看的比较好的一些帖子:
java连接mysql中文乱码处理
http://sue709394.iteye.com/blog/455332JAVA向MYSQL插入中文字符乱码问题
http://www.xhit.cn/html/program/JAVA/20071104/131614.html
通过修改系统配置文件的方法:
---------------------------------- show VARIABLES like 'character_%'; 你先查看一下,是不是都是utf8 不是的设置 比如: set character_set_server=utf8; ------------------------------------------------------------ 一般创建数据库的时候 CREATE DATABASE `kent` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ------------------------------------------------------- 表创建的时候: CREATE TABLE IF NOT EXISTS `xc_user` ( `ID` int(4) NOT NULL, `Name` varchar(20) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ------------------------------------------------------ 最后进入 my.ini [mysql] no-auto-rehash default-character-set = utf8 [mysqld] port=3306 default-character-set=utf8 default-storage-engine=INNODB --这个自己决定 ------------------------------------------------------------------