Android 向J2ee提交请求出现乱码问题
来源:互联网 发布:鸳鸯阵 知乎 编辑:程序博客网 时间:2024/05/18 02:46
1. 在Android提交参数给Server端时,没有对中文参数进行URL编码。
2. Tomcat服务器默认采用的是ISO8859-1编码得到参数值
解决方法:
第一步:在Android端:
URLEncoder.encoder("xxxx", "UTF-8");
这个方法最好可以把UTF-8指定为可变参数传入方法中,这样可以有多种编码选择。
第二步:在WEB端
使用:
String name = request.getParameter("name");name = new String(name.getBytes("ISO8859-1"), "UTF-8");
或者使用过滤器:
web.xml
<filter><filter-name>encodingFilter</filter-name><filter-class>cn.itcast.filter.EncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
EncodingFilter.java
package cn.itcast.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 功能: * * @author: Dell_lipeng * @dateTime : 2014-11-30 下午6:04:09 */public class EncodingFilter implements Filter {private String encoding = null;@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;CharacterEncodingHttpServletRequestWrapper requestWapper = new CharacterEncodingHttpServletRequestWrapper(request, encoding);CharacterEncodingHttpServletResponseWrapper responseWapper = new CharacterEncodingHttpServletResponseWrapper(response, encoding);chain.doFilter(requestWapper, responseWapper);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException { this.encoding = filterConfig.getInitParameter("encoding");}}
CharacterEncodingHttpServletRequestWrapper.java
package cn.itcast.filter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;/** * 功能: * @author: Dell_lipeng * @dateTime : 2014-11-30 下午6:33:04 */public class CharacterEncodingHttpServletRequestWrapper extendsHttpServletRequestWrapper {private String ecoding = null;private String oldEncoding = null;public CharacterEncodingHttpServletRequestWrapper(HttpServletRequest request, String encoding) {super(request);this.ecoding = encoding;this.oldEncoding = request.getCharacterEncoding();}@Overridepublic String getParameter(String value) {try {if ((oldEncoding == null || isIOS88591(oldEncoding))&& super.getParameter(value) != null) {return new String(super.getParameter(value).getBytes("iso-8859-1"), ecoding);} else {return super.getParameter(value);}} catch (Exception e) {e.printStackTrace();return null;}}private boolean isIOS88591(String endcoding) {endcoding = endcoding.toLowerCase();return endcoding.startsWith("iso") && (endcoding.indexOf("8859") != -1)&& endcoding.endsWith("1");}}
CharacterEncodingHttpServletResponseWrapper.java
package cn.itcast.filter;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;/** * 功能: * * @author: Dell_lipeng * @dateTime : 2014-11-30 下午6:44:05 */public class CharacterEncodingHttpServletResponseWrapper extendsHttpServletResponseWrapper {private String ecoding = null;public CharacterEncodingHttpServletResponseWrapper(HttpServletResponse response, String encoding) {super(response);this.ecoding = encoding;}public void setContentType(String value) {super.setContentType("text/html;charset=" + ecoding);}}
0 0
- Android 向J2ee提交请求出现乱码问题
- android客户端向服务器提交请求的中文乱码问题
- 浏览器表单向服务器提交中文出现乱码问题
- android post请求服务器出现乱码问题
- Android 向服务器发送get请求乱码问题
- Android向服务器发送请求时的中文乱码问题
- J2EE中解决sevlet提交给mysql中文出现乱码问题
- J2EE 中出现乱码的问题
- J2EE学习之出现乱码的问题
- Android Volley请求出现乱码
- Android Volley请求出现乱码
- 解决在Unity3D中通过Post向服务器提交请求,表单中带有中文导致的乱码问题!
- 向数据库传输数据出现乱码问题
- Android网络编程之使用get方式向服务端提交数据和乱码问题的解决
- 使用sevlet提交表单出现乱码问题
- tomcat post 提交时出现乱码问题
- Android学习笔记:Android向服务器发送请求时的中文乱码问题
- Android学习笔记:Android向服务器发送请求时的中文乱码问题
- 开发工具之MyEclipse用法基本总结(断点测试,快捷键,Junit测试)
- IOS中XML解析之libxml2
- 利用APNS进行消息推送 管理 给个免审核
- 9683 敏感词[C]
- 人品计算器控制台版本4.0
- Android 向J2ee提交请求出现乱码问题
- C++的Json解析库:jsoncpp和boost .
- javascript字符串长度验证
- 上机作业人品计算器
- 尼克斯彻定理
- struts2+hibernate3.2+spring2.0整合篇(二)
- Android基础——NinePatch点九图片
- Qt源码之事件处理
- 用Hadoop和MapReduce进行大数据分析