方案簡寫,自己或有些基礎的可以看懂,因為沒時間寫的那么詳細
方案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");