今天在做一个项目的时候用到了数据库,需要将winform中的数据导入到数据库,一开始写的时候因为都是英文界面没有注意,等有一个需要导入的中文时问题来了!!出现了问号,郁闷,,好吧,既然问题来了项目时间还算充裕,自己查资料解决。结果弄了一下午,走了各种弯路,在这里把我的经历写下来,为遇到同样问题的朋友提供一些参考,也提醒自己,下次遇到问题多思考,要看到问题的本质再去解决。
对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
我是这样想的,既然我不知道具体细节,那我就把4个层次支持的编码类型都弄成一个类型总不至于还是乱码了吧。
服务器编码设置:修改 MySql安装目录下面的my.ini(网上一查一堆,不同的版本不同方法)
设置好了可以通过mysql>show variables like "%char%"; 查询
数据库,数据表编码设置:mysql>alter database mysqlcode default character set 'utf8';
mysql>alter table mytable default character set 'utf8';
或直接通过图形界面设置,记住如果数据库或表在修改编码类型前就已存在,那就要进行重设编码类型
设置好了可以通过如下代码查询:
mysql>show create database test;
mysql>show create table yjdb;
数连接部分编码设置:mysql> set names 'utf8';
效果等于:mysql> SET character_set_client='utf8';
mysql> SET character_set_results='utf8'
重点来了!!上述都弄好的话(如果没看懂再看下其他博客,大同小异),用数据库命令执行一下INSERT INTO table VALUES(‘中文’,'中文');看数据库能不能显示中文,如果数据库中能显示。再试试通过程序输入的值能不能在数据库中显示,如不能显示执行下面的步骤:
在数据库连接字符串中增加字符集的说明,Charset=utf8,如
MySQLConnection con = new MySQLConnection("server=127.0.0.1;uid=root;pwd=;database=test;Charset=utf8");
OK,,总体就是这些,我想如果上述都没问题的话应该问题也解决了,,笔者也是到最后一步才解决了这个问题。。。