天天看點

關于WebView無法加載含中文的連結

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,完成。

當然,如果你是使用其他伺服器容器,也可以做類似的修改,同時也注意自己的伺服器端代碼對于請求字元的編解碼的結果。