Java程序向MySql数据库中插入的数据变成了问号

最近在做的一个Java实例项目中,有一个功能就是想数据库中添加记录。功能的业务逻辑本身是很简单的,但是结果却是插入的记录中的汉字全部都变成了问号。

Java程序向MySql数据库中插入的数据变成了问号_第1张图片

数据库:

Java程序向MySql数据库中插入的数据变成了问号_第2张图片

其实,当我们看到这个问题的时候都会很快的想到是编码格式的问题。但是当我查看MyEclipse中的编码格式的时候发现,编码方式是没有问题的,而且自己写的JSP页面中的编码格式也是没有问题的。那么这会嘛原因的?

后来在查看Mysql的资料时候发现:

1、MySQL的默认编码是Latin1,不支持中文,支持中文的数据库编码格式为gbk和utf8(注:在MySQL中要使用utf8,在java程序中使用utf-8,两者指的都是utf-8)。
    2、MyEclipse的编码方式和MySQL的编码方式不一致也会导致乱码问题。

 所以解决方案也很容易了——手动设置Mysql数据库编码格式:


1、查看数据库编码方式命令:show variables like 'character%';

  2、修改数据库编码方式:alter database test(数据库名称) character set utf8;

  3、创建数据库时,指定数据库的编码方式:createdatabase test(数据库名称) character set utf8;

  4、执行查看编码方式的命令后,出现如图所示信息。

Java程序向MySql数据库中插入的数据变成了问号_第3张图片

      从以上信息可知数据库的编码方式为latin1,其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码方式;character_set_database为数据库的编码方式;character_set_results是结果集的编码方式;character_set_server为数据库服务器的编码方式。只要保证以上采用的编码方式一样,就不会出现乱码问题。
  5、修改配置文件my.ini:
  修改[client]下面的语句:default-character-set=utf8

Java程序向MySql数据库中插入的数据变成了问号_第4张图片

 6、重启MySQL服务器
   开始-->运行-->输入:services.msc,打开“服务”,找到MySQL服务,右键重启即可。

你可能感兴趣的:(【数据库】)