用JDBC连接数据库打印输出时,出现了中文乱码的问题。Mysql和网页的情况如下:
Mysql乱成一窝粥。
网页的情况也不乐观...
通过数据搜索,发现是因为编码格式的问题。根据网络上的方法,将Mysql的编码格式和JDBC的部分代码修改为:
Mysql命令使用sett Variable_name=utf8;(如set character_set_client=utf8;),或者Mysql中的my.在ini文件中,将[client]和[mysql]default-character-set=后面改为utf8,然后在[mysqld]下面加一句character-set-server=utf8。
在JDBC中,UseUnicodede是在连接到Mysql的url后面添加的=true&characterEncoding=utf-8。
按照网上策略,完成这两个步骤就完成了。
结果在我这里还是不行,还是乱码。
于是开始疯狂尝试...在3.、经过四个小时的努力,终于找到了解决方案。
Mysql和JDBC再次修改如下:
Mysql修改character_set_client和character_set_results为gbk。
JDBC部分在方法开头加了一句responsee.setCharacterEncoding("gbk");
看了一圈文章,觉得csdn的一个大佬说得很好:
"mysql控制台输入的数据默认编码为gbk,但mysql服务器根据utf-8分析保存数据。因此,保存的数据必须是无序的。
读取数据库的数据,mysql按utf-8编码传输到控制台,但控制台默认按gbk分析,所以显示的数据必然会出现代码混乱。”
也就是说,要想正常插入中文,正常读取数据输出为中文,必须修改character_set_client和character_set_results为gbk格式。
8个 character_set 变量说明: 一、character_set_client主要用于设置客户端使用的字符集。
二、character_set_connection连接数据库时的字符集主要用于设置,如果连接数据库中使用的字符集类型没有在程序中注明,则按此字符集设置。
三、character_set_database默认创建数据库的编码格式主要用于设置。如果在创建数据库时没有设置编码格式,则按此格式设置。
四、character_set_filesystem文件系统的编码格式将操作系统上的文件名转换为这个字符集,即 character_set_client转换character_set_filesystem, 默认binary不做任何转换。
五、character_set_results如果没有指明数据库返回客户端时使用的编码格式,则使用服务器的默认编码格式。
六、character_set_server该变量建议由系统自行管理,而不是人为定义服务器安装时指定的默认编码格式。
七、character_set_system数据库系统使用的编码格式一直是utf8,不需要设置。它是存储系统元数据的编码格式。
八、character_sets_dir本变量是字符集安装的目录。
JDBC部分的修改是自己尝试的,具体原理不是很确定,怕误导就不多说了。
Mysql和页面的成功运行如下: