`
jgsj
  • 浏览: 959838 次
文章分类
社区版块
存档分类
最新评论

Android访问服务器(TOMCAT)乱码引发的问题

 
阅读更多

1、浏览器往服务器发送的请求主要可分为2种:get、post;delete、head等不赘述。

GET方式:

从浏览器上直接敲地址,最大特点就是参数直接跟在地址后面。

POST方式:表单提交等。

2、访问过程:

浏览器中输入地址 –> 浏览器对中文进行编码 –>发送到服务器 ->服务器进行解码

如何浏览器编码和服务器解码用的字符集不一致就会发生乱码问题。

3、乱码的解决

默认浏览器使用UTF-8编码(IE默认GBK当然可以通过meta标签设置)

服务器(Tomcat)默认使用iso-8859-1解码。Iso-8859-1是不支持中文的,也就是说不做处理,中文是一定乱码的。

POST方式解决:

比如表单提交,在Servlet或者Filter中设置request.setCharacterEncoding("UTF-8");就能很好的解决。

GET方式:单纯设置request.setCharacterEncoding("UTF-8");是没有用的,所以我们把默认的iso-8859-1编码改成UTF-8,在TOMCAT的配置文件的server.xml中更改:

<Connector port="8080"protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"URIEncoding="UTF-8" />

添加URIEncoding=UTF-8

4、Android中访问:

POST方式,通过HttpUrlConnection封装POST请求【具体实现百度】,POST方式参数是需要打包发送的,不是直接跟在url后面。例如:http://www.demo.com?p=123这不是post传输参数。

GET方式,通过HttpUrlConnection可以很简单的实现,但是会发现,很容易出现乱码问题。

首先:添加URIEncoding=UTF-8工作完成,还是会发送乱码。

这是因为,上面的访问过程提到浏览器对中文进行编码,这里我们直接发送请求,并没有编码这个过程,所以我们需要自己手动编码,即:

String name =URLEncoder.encode("中国万岁","UTF-8");

这样我们就模拟了浏览器的编码,然后发送至服务器,服务器解码也改成UTF-8了,于是又可以快乐的玩耍了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics