您的位置:首页 > 运维架构 > Tomcat

[安卓笔记]android客户端向tomcat服务器发送请求中文乱码问题解决

2016-03-13 15:39 1016 查看
android客户端请求服务端的url地址中含有中文时将会产生中文乱码问题。 产生乱码的原因有主要以下几个方面: ------------------------------------------------------------------------------------------------ 1.当以get方式请求服务端的资源时,没有对url中的中文进行编码。 2.忽略了tomcat默认的编码格式(iso8859-1)。 3.servlet没有对request和response设置正确的编码格式。
4.servlet没有处理get请求方式中的乱码问题。 -------------------------------------------------------------------------------------------------
解决方案: 步骤: 1、客户端对url中中文参数进行编码(使用URLEncoder类)。 这里采用的是最原始的java.net包中提供的URL,HTTPURLConnection类。 请求数据全部封装到map中。
get请求:

?
post请求:

?
stream2String方法(将流对象中的数据转化为字符串):

?
测试时,我们也确实发现对get请求中url中的中文进行了编码:



2、服务端对request和response设置正确的编码格式。 首先在servlet中加上这几行代码.

?
这还没有完,以上仅处理了post请求的乱码问题,当用户以get方式请求时仍然有乱码。所以你还需要加上这行代码:

?
之所以要判断一下请求的方式是是否为get,是因为如果请求方式为post的话,又会变成乱码了,当然,如果你在servlet中对doPost和doGet分别进行乱码处理,那就不用判断了。只是大多数人更喜欢这样写:

?
此时一定要在doget方法中加上判断. 当然你还有另一种选择,那就是过滤器,配置如下所示的过滤器即可处理上述的乱码。 编码格式在web.xml中手动配置,避免硬编码。(context-param中配置)

?
对过滤器不熟悉的参考这篇文章:filter详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: