开发环境
cent os 6.5
mysql
springboot
duird
故障描述
本地开发环境没有任何问题,上传到服务器后发现提交的表单内容只要是中文直接变成 ???
解决方式
错误尝试:
一开始怀疑是代码的问题,于是从百度上找了一些方法,但是很多都是无效的,比如配置
都没有解决问题,后来经过调试发现,java代码是没有问题的,直到插入数据库的最后一步,传递过来的数值还是中文,于是查看了mysql编码发现了问题。
正确的解决方式:
很多时间mysql安装时指定的编码都是默认编码(latin1),而我们开发一般都是用UTF8的编码,我们可以通过 show variables like 'character%'; 查看数据库编码
从网上看到可以通过执行
SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8;
结果在尝试执行上面查看编码的语句后发现确实所有编码已经变成了UTF8,但是程序提交后还是乱码,根本解决不了问题,其实这只是一种假象。此种方式只在当前状态下有效,当重启数据库服务后失效。
这里特别申明下这种方式,不要无故采坑
下面真正的干活就要来了,如果需要一劳永逸的解决mysql的乱码还是需要从my.cnf下手
首先找到my.cnf在服务器中的位置(/etc/my.cnf,每个人服务器可能目录不同,这里只是我的服务器路径),执行vim my.cnf
增加图中画红线的两部分代码即可
编辑完毕后 qw! 强制退出
重启mysql服务 service mysql restart,出现
然后再回到程序中执行form表单提交,发现中文乱码的问题就已经完美解决了
这里也正常了,好了 乱码的问题到此就已经完美解决了。