[安卓笔记]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详解
4.servlet没有处理get请求方式中的乱码问题。 -------------------------------------------------------------------------------------------------
解决方案: 步骤: 1、客户端对url中中文参数进行编码(使用URLEncoder类)。 这里采用的是最原始的java.net包中提供的URL,HTTPURLConnection类。 请求数据全部封装到map中。
get请求:
?
?
?
2、服务端对request和response设置正确的编码格式。 首先在servlet中加上这几行代码.
?
?
?
?
相关文章推荐
- 集成Tomcat插件到Eclipse
- tomcat与nginx区别
- Tomcat启动过程(一):从BootStrap到EndPonit
- Tomcat 6 --- JNDI详解
- Tomcat下的JAAS实例
- Myeclipse中启动tomcat 端口被占用问题
- Linux下jvm与tomcat的安全与优化
- IT忍者神龟之在Tomcat配置JNDI数据源的三种方式
- Tomcat数据源
- Eclipse配置tomcat发布路径的问题
- 使用hibernate3的项目从tomcat7转到weblogic时,遇到了ClassNotFoundException: org.hibernate.hql.internal.ast.HqlToke
- war包部署到tomcat
- Ubuntu中如何将Tomcat端口改为80
- MyEclipse下配置Tomcat7
- tomcat的端口修改后在eclipse中自动恢复
- tomcat war包解压规则
- tomcat如何利用自带工具查看tomcat信息
- CentOS 安装 Tomcat
- Tomcat发布Maven项目遇到的种种异常
- jfinal 发布到tomcat使用共享目录中的jar问题