ajax(jquery)汉字乱码分析与及解决方案
来源:互联网 发布:淘宝买家怎么升心快 编辑:程序博客网 时间:2024/05/20 05:22
相关知识回顾
jquery采用utf-8发送数据,看下v1.2.6中处理编码的代码
// Serialize an array of form elements or a set of// key/values into a query stringparam: function( a ) {var s = [ ];function add( key, value ){s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);};// If an array was passed in, assume that it is an array// of form elementsif ( a.constructor == Array || a.jquery )// Serialize the form elementsjQuery.each( a, function(){add( this.name, this.value );});// Otherwise, assume that it's an object of key/value pairselse// Serialize the key/valuesfor ( var j in a )// If the value is an array then the key names need to be repeatedif ( a[j] && a[j].constructor == Array )jQuery.each( a[j], function(){add( j, this );});elseadd( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );// Return the resulting serializationreturn s.join("&").replace(/%20/g, "+");}
方案一,解码全部使用utf-8编码。(这个国内一般不会如此处理)
方案二,过滤器针对 ajax部分解码采用utf-8进行转码,其余部分仍用GBK。
方案2.1 前台传递编码方式utf-8. (注意,千万不要通过parameter传递,对于tomcat、tongweb等中间件只会转码一次)
var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); xhr.setRequestHeader("charset", "utf-8");过滤器通过请求头中的参数charset设置字符集
String charset = servletRequest.getHeader("charset");
方案2.2 通过ajax特有属性头进行判断
if (this.xmlHttpCharacterEncoding != null&& "XMLHttpRequest".equalsIgnoreCase(request.getHeader("x-requested-with"))) {request.setCharacterEncoding(this.xmlHttpCharacterEncoding);} else if (characterEncoding != null) {request.setCharacterEncoding(characterEncoding);}
方案3:全部使用gbk解码。这个有二次转码的问题。
修改jquery传递参数部分,将参数转换成为unicode,encodeURI("测试001")修改action代码String orderCode = URLDecoder.decode(request.getParameter("orderCode"),"utf-8");
至此"测试001"被编码2次:1,encodeURI;2,jquery encodeURIComponent
被解码2此:1,filter;2,action中URLDecoder.decode
- ajax(jquery)汉字乱码分析与及解决方案
- ajax中文乱码原因分析及解决方案
- ajax中文乱码原因分析及解决方案
- jquery ajax传递中文参数乱码问题及解决方案
- Jquery Ajax中文乱码解决方案
- AJAX乱码及错误解决方案
- jpgraph 汉字乱码解决方案及实例
- Jquery ajax Post 提交 乱码解决方案
- jQuery Ajax 传输中文乱码解决方案
- jquery ajax 提交给servlet乱码解决方案
- JQuery AJAX提交中文乱码的解决方案
- JQuery AJAX提交中文乱码的解决方案
- jquery之ajax中文乱码解决方案
- JQuery AJAX提交中文乱码的解决方案
- ajax提交汉字乱码
- jquery ajax实例及乱码问题
- c# 调用php webservice 汉字乱码解决方案 php调用c# webservice 汉字乱码解决方案(亲测)
- ajax中get与post方法的区别,及乱码的终极解决方案
- 原创吐槽之诸题
- Android 弹出拨号器选择界面
- IO复用: select 和poll 到epoll
- linux JDK设置
- linux 域名解析的配置
- ajax(jquery)汉字乱码分析与及解决方案
- Struts2 学习笔记18 拦截器原理分析
- Jquery UI学习笔记(3)
- ZOJ 2850和ZOJ 1414
- 递归创建二叉树 java实现
- windows下eclipse跑junit报错:CreateProcess error=206
- Hadoop实现AbstractJob简化Job设置
- Ext.Function.flexSetter
- 液晶显示器 选购攻略