詳情
小記今天解決的一個bug,項目使用Spring webflux實現(xiàn)上傳文件到服務(wù)器的功能,但長期以來文件凡是中文名字的是亂碼,同事被困擾了很長一段時間,她一直懷疑是前端組件的問題,沒有正確編碼,前端使用vue實現(xiàn)。一直沒找到根本原因,但找到網(wǎng)頁傳過來的編碼,于是寫了一行代碼進行強行轉(zhuǎn)碼。
val filename = String(file.filename().toByteArray(charset("ISO-8859-1")), charset("UTF-8"))
我覺得該問題有點蹊蹺,不應(yīng)該發(fā)生,必須解決,于是便有了下文。
過程
我不太確定是前端還是后端代碼的bug,因此我嘗試了以下幾種不同的情況
- react做的前端,使用antd上傳的組件,后端使用我們的項目
- spring web開發(fā)的后端,vue前端
- 項目服務(wù)端(webflux),vue前端
- 新寫了一個服務(wù)端,只實現(xiàn)上傳的接口,但webflux的版本不一樣,測了兩個版本
2.1.1和2.4.5,前端還是vue
測試結(jié)果是原項目的服務(wù)端接口亂碼(1和3),其他都正常
結(jié)論
項目的webflux版本有問題,使用的是spring-boot 2.4.4-SNAPSHOT,于是我們嘗試升級到2.4.5居然不亂碼了!被spring坑慘了!吐血~