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