UTF-8异步请求到gbk应用的处理方法2
2011-11-15 19:02
561 查看
前端js发送经过编码的http请求到gbk的后台应用,这时候需要进行编码解码的处理。
如
127.0.0.1:8080/xxx.xhtml?keywords=%E8%87%AA%E8%A1%8C%E8%BD%A6&encode=utf-8
当web应用收到这样的请求时,如果应用或者服务器上默认做了gbk编码的拦截处理,那么这时候用request.getParameter时将会出现乱码,解码后的中文字符最后一个字无法解码。
解决方法:用request.getQueryString()方式,获得queryString后自己重新解析这个url参数,代码如下
如
127.0.0.1:8080/xxx.xhtml?keywords=%E8%87%AA%E8%A1%8C%E8%BD%A6&encode=utf-8
当web应用收到这样的请求时,如果应用或者服务器上默认做了gbk编码的拦截处理,那么这时候用request.getParameter时将会出现乱码,解码后的中文字符最后一个字无法解码。
解决方法:用request.getQueryString()方式,获得queryString后自己重新解析这个url参数,代码如下
HttpServletRequest request ....; String encode = StringUtil.trimToNull(request.getParameter("encode")); //如果是utf-8编码 if (StringUtil.isEqualsIgnoreCase(encode, "utf-8")) { //记录原始参数 if (request != null) { Enumeration parameterNames = request.getParameterNames(); if(parameterNames!=null){ while (parameterNames.hasMoreElements()) { String parameterName = parameterNames.nextElement().toString(); String parameterValue = StringUtil.trimToNull(request.getParameter(parameterName)); if(parameterValue!=null){ //parameterValue = URLDecoder.decode(parameterValue, "UTF-8"); try { //对参数进行特殊处理 String queryString = request.getQueryString(); String[] querys = StringUtil.split(queryString, "&"); if(querys!=null && querys.length > 0){ for(String query : querys){ parameterValue = StringUtil.substring(query, StringUtil.getLength(parameterName+"=")); parameterValue = URLDecoder.decode(parameterValue, encode);//根据encode参数值自定义解码 } } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block } } //对于没有传值的参数,直接忽略应该没有什么副作用 if (!StringUtil.isEmpty(parameterValue)) { request.setAttribute(parameterName, parameterValue); } } } }else { //错误异常处理 return false; } } return true;
相关文章推荐
- Ajax请求二进制流进行处理(ajax异步下载文件)的简单方法
- angularjs 处理多个异步请求方法汇总
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- angularjs 处理多个异步请求方法汇总
- ajax中如何将utf-8编码的数据请求发送到gbk编码应用的解决方法
- tomcat设置为UTF-8,解析GBK编码的UTL请求,中文乱码处理
- ajax中如何将utf-8编码的数据请求发送到gbk编码应用的解决方法
- angularjs 处理多个异步请求方法汇总
- GBK,UTF-8,和ISO8859-1编码区别与get,post请求中文乱码处理
- 在Web应用中,会用到大量的Ajax请求,在Ajax请求中存在的一个问题就是如何判断session超时,在网上找到的一个java中处理此问题方法:
- 支付宝即时到账接口,异步回调post请求的接受,Jersey 处理post参数的方法
- Ajax请求二进制流进行处理(ajax异步下载文件)的简单方法
- iOS应用中发送HTTP的get请求以及HTTP异步请求的方法
- 应用层和驱动层的同步与异步的处理逻辑及底层实现
- WINCE6 多应用同时请求GPS数据解决方法
- idea设置项目的字符集编码为gbk/utf-8的方法
- 在ASP.NET中使用IHttpHandler处理请求(如自实现AJAX)时,无法获得Session(或者说是Session 为 null)的原因及解决方法
- 应用层与驱动层同步事件处理方法
- MyEclipse编码设置,中文乱码解决方法,UTF-8,GBK(转)
- springsecurity使用异步POSt请求报404错误的解决方法