WebView是android開發中經常遇到的控件,調用webview.loadUrl(String str)函數時,當連結str中包含中文時,則會無法通路,比如:
String urlStr = "http://218.241.27.245:8080/myFate/zhishidiaoyue/擺件/shengxiao_gou.html";
webview.loadUrl(urlStr);
此時便會無法通路,解決這個問題的關鍵在于編碼問題,通過調試可知在android用戶端并不存在編碼問題由于urlStr也是指向伺服器中檔案,由伺服器接收用戶端請求連結,此時編碼可能會出現問題,是以問題可能出在伺服器端。
**
解決方法:
**
如果伺服器容器采用的是tomcat,那麼編碼就應存在于tomcat的配置檔案中,解決步驟:
1. 首先進入伺服器;
2. 打開tomcat安裝目錄 -> conf檔案夾 -> server.xml;
3. 找到如下代碼段:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
要設定GET的編碼,在相應的端口(此處樓主使用的是8080端口)的Connector的屬性:URIEncoding=”UTF-8”,這樣,GET方式送出的資料才會被正确解碼,修改為:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
4.重新開機tomcat,完成。
當然,如果你是使用其他伺服器容器,也可以做類似的修改,同時也注意自己的伺服器端代碼對于請求字元的編解碼的結果。