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

方案簡寫,本身或有些基礎的能夠看懂,由於沒時間寫的那麼詳細spring

方案1tomcat

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

在tamcat中server.xml文件mvc


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

爲了確保get數據採用UTF8編碼 spa

@ModelAttributeserver

 

方案2。xml

tomcat的服務器的默認編碼是ISO8859-1,因此在容器中獲取的請求數據能夠從新編碼顯示utf-8

例如你在控制層 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");

相關文章
相關標籤/搜索