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。

推薦閱讀: