解決問題的核心在於修改Tomcat的配置,在Server.xml文件中添加一個名為URIEncoding的屬性,它用於對HTTP請求中的get方法傳過來的URL進行編碼。Tomcat內置的對於get協議中的URL編碼是ISO-8859-1,這個字符集不能直接支持中文等雙字節的信息,而中文文件的下載鏈接恰恰是通過get協議進行的。
打開$tomcat安裝目錄$/config/server.xml文件,在其中找到如下代碼:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
這段代碼規定了Tomcat監聽HTTP請求的端口號等信息,在這里添加一個屬性:URIEncoding,值為UTF-8,即可讓Tomcat以UTF-8的編碼處理get請求:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="utf-8" connectionTimeout="20000" redirectPort="8443" />
在Web應用程序中 如果調用response.sendRedirect()方法重定向到中文文件名的頁面 需要如下的方式調用
response.secdRedirect(java.net.URLEncoder.encode("員工信息.html","UTF-8"));