spring mvc 文件下載 get請求解決中文亂碼問題


方案簡寫,自己或有些基礎的可以看懂,因為沒時間寫的那么詳細

方案1

spring mvc解決get請求中文亂碼問題,

在tamcat中server.xml文件


URIEncoding="UTF-8"
useBodyEncodingForURI="true"

為了確保get數據采用UTF8編碼 

@ModelAttribute

 

方案2。

tomcat的服務器的默認編碼是ISO8859-1,所以在容器中獲取的請求數據可以重新編碼顯示

例如你在控制層 controller 獲取一個filename的字符串

你可以采用

filename = new String(filename.getBytes("ISO889-1"),"UTF-8");

這種方式將filename以tomcat的的默認編碼方式進行編碼,然后以utf-8的編碼方式進行解碼,這樣就可以獲取正常的中文了,因為utf-8編碼是支持中文顯示的

這種方式其實就是告訴tomcat容器要以utf-8的形式進行解碼,這樣出來的字符串就不會亂碼了,具體的為何要重新以iso8859-1進行編碼,然后指定utf-8解碼

而不是直接指定UTF-8解碼,這種問題要去看源碼了,自己研究

下面是我自己的理解:

我可以這樣理解,比如tomcat的默認編碼格式是ISO889-1,而你傳過來filename默認是以ISO889-1解碼的,而ISO889-1不支持中文,所以亂碼,這樣你就

再以ISO889-1的形式進行編碼,回到二進制字節碼的狀態,然后指定utf-8解碼,就支持中文了,所以顯示ok

 

 

方案3:

總結:只要是進入到tomcat容器中亂碼的可以采用這種最原始而有效的方法進行解決,除非有其他特殊要求

String filename=错误失误易忘总结.docx;

filename = new String(filename.getBytes("ISO889-1"),"UTF-8");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM