mysql数据库插入中文乱码或问号--解决历程

时间:2021-04-11 07:31:01

   今天在做一个项目的时候用到了数据库,需要将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_connection='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,,总体就是这些,我想如果上述都没问题的话应该问题也解决了,,笔者也是到最后一步才解决了这个问题。。。