方案簡寫,本身或有些基礎的能夠看懂,由於沒時間寫的那麼詳細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");