场景
表单上传,后台MultipartFile接收。
本地测试不乱码,在服务器上乱码。
解决方案
继续测试,发现直接用ip+端口上传不是乱码。
用域名或nginx是乱码。
因此可以猜测是网关或nginx的问题。
先调整nginx,http模块或server模块加 chatset utf-8;
实测无效。
继续找问题,百度了下说是zuul gateway的一个缺陷。
原因是gateway过滤器默认使用 US-ASCII 编码。
解决办法:
1、spring-web 5.6以上版本已修复该缺陷。
2、手动修改gateway项目的filter过滤器(需要覆盖,因为是class类里的内容)。
3、zuul.servlet-path=/
很明显,第三种方案更快捷简便。
application.properties配置:
zuul.servlet-path=/
application.yml配置:
zuul:
servlet-path: /
修改配置,重启gateway项目,发现果然不乱码了,问题解决。