問題描述:
開發文件下載功能時,因為需求比較簡單,要求下載一個說明文件。於是,直接給出了文件所在服務器的地址,通過鏈接直接下載此文件(因需求簡單,未考慮安全方面的問題-_-||)。
在這個過程中,文件的路徑中有中文,導致一直無法實現下載功能,瀏覽器會自動對中文進行編碼,導致服務器定位不到正確的位置。
問題原因:
Tomcat內置的對於get協議中的URL編碼是ISO-8859-1,這個字符集不能直接支持中文等雙字節的信息,而中文文件的下載鏈接恰恰是通過get協議進行的。
解決辦法:
解決問題的核心在於修改Tomcat的配置,在Server.xml文件中添加一個名為URIEncoding的屬性,它用於對HTTP請求中的get方法傳過來的URL進行編碼,修改它,即可讓Tomcat以UTF-8的編碼處理get請求。配置server.xml中的代碼如下:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="utf-8" connectionTimeout="20000" redirectPort="8443" />