1.问题描述
同一个项目,同一套代码,测试环境向MySQL写入数据一切正常,但是正式环境写入中文数据就会变成问号??
2.原因分析
- 在项目中添加了日志打印,打印接口入参以及写入结果,也是一切正常都是中文数据
- 直接修改数据库表中的数据改为中文也是正常的,可以正常显示出中文
- 所以可以确定是通过Java向MySQL写数据的过程中出现了问题
3.解决方案
在 application.yml 中数据源连接配置上添加 characterEncoding=utf-8 将编码格式改为 utf-8
如果添加 characterEncoding=utf-8 之后问题依然没有解决,别急着去找其他解决方法,因为可能不是这种解决方式不对,而是没生效,我遇到的就是这种没生效的情况,所以直接到部署正式环境代码的 Linux 上,找到线上环境的 application.yml 文件,直接添加 characterEncoding=utf-8 之后,问题就解决了