SpringMVC返回的ResponseEntity出現亂碼及解決
返回ResponseEntity亂碼
問題
前臺通過數據到後臺查詢相關數據,結果是後臺返回的數據出現中文出現亂碼,如下圖所示
原因
對於String類型,在沒有在代碼中明確指定編碼類型的情況下,可能後臺對傳輸的數據沒有正確編碼(本人的猜測,時間有限,後面有時間會跟下源碼和看看文檔,發現真正的原因)
解決
將String類型改為用戶自定義的Pojo,如User等,或者改為List這些比較高級一點的數據類型。然後通過@ResponseBody進行序列化,中文亂碼問題解決,如下圖所示。
ResponseEntity下載文件名中文亂碼
SpringBoot下載文件,文件名帶瞭中文出現亂碼
代碼如下:
return ResponseEntity.ok() .header("Content-disposition", "attachment;filename=" + fileName) .contentLength(file.length()) .contentType(MediaType.parseMediaType("application/octet-stream")) .body(resource);
解決辦法
給文件名進行編碼:
fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
問題解決
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- springmvc中下載中文文件名稱為下劃線的解決方案
- 使用spring框架ResponseEntity實現文件下載
- springboot中Excel文件下載踩坑大全
- 如何解決springmvc文件下載,內容損壞的問題
- Quarkus中實現Resteasy的文件上傳下載操作