虽然有数个部分组成,路由,微服务,数据库。但是问题核心是编码不对。
如果要进行问题排查,可以从2个方面入手:
0x01 zuul路由:
相信用过jvm的朋友们,偶尔会使用带有额外参数的命令行启动bootjar,这时候一定要留意,给zuul配置 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8。这相当于告诉jvm,编码就是UTF-8,排除zuul转码异常的情况。
0x02 数据库MySQL:
一般而言,数据库从接收数据到写入,也有转码过程。参考:https://blog.csdn.net/sun8112133/article/details/79921734 给出的分析,我们实际上也需要对MySQL的编码配置留个心眼。通过使用 show variables like "char%", 如果发现有 latinl 格式,那么就要小心,很有可能是这里没有统一编码,导致写入了乱码。