详情
小记今天解决的一个bug,项目使用Spring webflux实现上传文件到服务器的功能,但长期以来文件凡是中文名字的是乱码,同事被困扰了很长一段时间,她一直怀疑是前端组件的问题,没有正确编码,前端使用vue实现。一直没找到根本原因,但找到网页传过来的编码,于是写了一行代码进行强行转码。
val filename = String(file.filename().toByteArray(charset("ISO-8859-1")), charset("UTF-8"))
我觉得该问题有点蹊跷,不应该发生,必须解决,于是便有了下文。
过程
我不太确定是前端还是后端代码的bug,因此我尝试了以下几种不同的情况
- react做的前端,使用antd上传的组件,后端使用我们的项目
- spring web开发的后端,vue前端
- 项目服务端(webflux),vue前端
- 新写了一个服务端,只实现上传的接口,但webflux的版本不一样,测了两个版本
2.1.1
和2.4.5
,前端还是vue
测试结果是原项目的服务端接口乱码(1和3),其他都正常
结论
项目的webflux版本有问题,使用的是spring-boot 2.4.4-SNAPSHOT
,于是我们尝试升级到2.4.5
居然不乱码了!被spring坑惨了!吐血~
网友评论