在idea上面新建了一个web登录项目,浏览器提交表单,username“李华”存入数据库是乱码,只好一步步解决
1.在idea中输出请求参数username就是乱码,也就是“form表单提交中文的乱码问题”
解决方法:在idea中设置request编码格式和客户端网页一致(以UTF-8为例),
request.setCharacterEncoding("UTF-8");
参见:https://www.cnblogs.com/yyz666/p/4051294.html,
2.解决之后,发现存入数据库还是乱码,即“用JDBC在mysql数据库中插入中文乱码”,这篇文章问题排查思路很好:
https://blog.csdn.net/huangxia73/article/details/11772783
查询了character_set_XXX变量,发现character_set_database(默认数据库的编码格式)和character_set_server是latin1,
百度了一下,可以在 /etc/my.cnf 中全局设置,我添加了以下[client]和[mysqld]
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
修改好之后,重启启动mysql。
完美解决。
ps:sudo修改之后,my.cnf权限 chmod 644 my.cnf,不然mysql.cnf任何人都可以读写的华,重启mysql的时候,mysql会忽略这个配置
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
character_set_XXX的含义
https://blog.csdn.net/sun8112133/article/details/79921734
命令学习:
查看数据库编码格式:mysql> show variables
like
'character%'
;
查看创建数据表的编码格式:show create table <表名>