今天遇到了将数据存到MySQL数据库,出现中文乱码的问题,查了很多的网上的资料,一次次尝试才解决。整个人的头都大了,差点放弃,幸好坚持下来了,最终问题解决,非常高兴,怕自己忘了,记下来。
第一步;用eclipse调试工具DeBug检查传递到servlet的参数,是否出现乱码。
解决方法://在servlet中设置编码方式
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
这一步很多人都知道的。
第二步:数据库插入中文乱码首先需要排除的问题是,MySQL的默认字符集和对应database的字符集是什么。
通常为了以后的兼容性,建议将整个MySQL的默认字符集都设置成utf-8。
可以使用以下命令查看默认字符集:
mysql> SHOW VARIABLES LIKE 'character%';
我的默认的是这样的
最终要改成下面这样的
大家对照一下哪里不一样就把不一样的修改过来,下面是修改字符集的命令
mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)
进行到了这里问题还没有解决
第三步:
jdbc:mysql://localhost:3306/shiliuxingbang?useUnicode=true&characterEncoding=utf-8
这是我们连接数据库用的url,后面的
?useUnicode=true&characterEncoding=utf-8
这里是关键,添加完这个以后数据库乱码问题解决。