天天看点

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

当然,如果你是使用其他服务器容器,也可以做类似的修改,同时也注意自己的服务器端代码对于请求字符的编解码的结果。