轉自:http://blog.sina.com.cn/s/blog_7c76d63901018lyt.html
方法一:推薦,不會影響到其它項目
見我的另一篇博客:http://www.cnblogs.com/x_wukong/p/3292664.html
修改方法:
修改tomcat下的conf/server.xml文件,找到Connector標簽,添加useBodyEncodingForURI="true",如下代碼:
<Connector port="8080" useBodyEncodingForURI="true" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
對於 URL 提交的數據和表單中 GET 方式提交的數據,在接收數據的 JSP 中設置 request.setCharacterEncoding 參數是不行的,因為在 Tomcat5.0 中,默認情況下使用ISO-8859-1 對 URL 提交的數據和表單中 GET 方式提交的數據進行重新編碼(解碼),而不使用該參數對 URL 提交的數據和表單中 GET 方式提交的數據進行重新編碼(解碼)。要解決該問題,應該在 Tomcat 的配置文件的 Connector 標簽中設置useBodyEncodingForURI 或者 URIEncoding 屬性,其中 useBodyEncodingForURI 參數表示是否用 request.setCharacterEncoding 參數對 URL 提交的數據和表單中 GET 方式提交的數據進行重新編碼,在默認情況下,該參數為 false (Tomcat4.0 中該參數默認為true );URIEncoding 參數指定對所有 GET 方式請求(包括 URL 提交的數據和表單中 GET 方式提交的數據)進行統一的重新編碼(解碼)的編碼。URIEncoding 和 useBodyEncodingForURI 區別是,URIEncoding 是對所有 GET 方式的請求的數據進行統一的重新編碼(解碼),而 useBodyEncodingForURI 則是根據響應該請求的頁面的request.setCharacterEncoding 參數對數據進行的重新編碼(解碼),不同的頁面可以有不同的重新編碼(解碼)的編碼。所以對於 URL 提交的數據和表單中 GET 方式提交的數據,可以修改 URIEncoding 參數為瀏覽器編碼或者修改 useBodyEncodingForURI 為true ,並且在獲得數據的 JSP 頁面中 request.setCharacterEncoding參數設置成瀏覽器編碼。
方法二:不推薦,有可能影響其他應用
默認情況下,tomcat使用的是iso8859-1的編碼編碼方式,瀏覽器的embed標簽中src指向的地址要通過tomcat去解析。如果包含中文,采用這種編碼方式就會出現亂碼問題,而在這種情況下,亂碼問題就表現出無法訪問該音頻文件了。
解決方法很簡單:
修改tomcat下的conf/server.xml文件,如下代碼:
connectionTimeout="20000"
redirectPort="8443" />
這段代碼規定了Tomcat監聽HTTP請求的端口號等信息。可以在這里添加一個屬性:URIEncoding,將該屬性值設置為UTF-8,即可讓Tomcat(默認ISO-8859-1編碼)以UTF-8的編碼處理get請求。更改后的代碼如下所示:
URIEncoding="UTF-8"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />