万网mysql中文乱码_Linux下MySQL出现乱码的解决方法-阿里云开发者社区

在CentOS 6.5环境下,部署的SpringBoot应用遇到提交中文表单内容显示为问号的乱码问题。排查后发现是MySQL编码设置不一致导致。尝试通过SQL语句临时设置编码无效,因为重启服务会失效。正确解决方案是永久修改my.cnf配置文件,增加相关UTF8编码设置,并重启MySQL服务,成功解决中文乱码问题。
摘要由CSDN通过智能技术生成

开发环境

cent os 6.5

mysql

springboot

duird

故障描述

981e166460befad1f1a5e6bd8f448a79.png

本地开发环境没有任何问题,上传到服务器后发现提交的表单内容只要是中文直接变成 ???

解决方式

错误尝试:

一开始怀疑是代码的问题,于是从百度上找了一些方法,但是很多都是无效的,比如配置

b0f9296ddc71c868ab40807c1412261a.png

038789887df624186472ff5775cd0399.png

都没有解决问题,后来经过调试发现,java代码是没有问题的,直到插入数据库的最后一步,传递过来的数值还是中文,于是查看了mysql编码发现了问题。

正确的解决方式:

很多时间mysql安装时指定的编码都是默认编码(latin1),而我们开发一般都是用UTF8的编码,我们可以通过 show variables like 'character%'; 查看数据库编码

d140a862901afff13a481f5a77660f89.png

从网上看到可以通过执行

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

515cd5be4f9be8b691e28bed2af5b5ea.png

增加图中画红线的两部分代码即可

编辑完毕后 qw! 强制退出

重启mysql服务 service mysql restart,出现

855644371a25acc60ebea72c3a4cabce.png

然后再回到程序中执行form表单提交,发现中文乱码的问题就已经完美解决了

c3fc0661bde29e1242df69ede2e7681b.png

这里也正常了,好了 乱码的问题到此就已经完美解决了。开开心心编码,快快乐乐生活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值