jQuery form 表单. serialize() 序列化后中文乱码问题原因及解决
原因:.serialize() 自动调用了 encodeURIComponent 方法将数据编码了
解决方法: 调用 decodeURIComponent(XXX,true); 将数据解码
例如: (相关课程推荐: jQuery 教程 https://www.html.cn/jskuangjia/jquery/ )
- var params = jQuery("#formId").serialize(); // http request parameters.
- params = decodeURIComponent(params,true);
在进行编码
params = encodeURI(encodeURI(params));
后台
- String paramsTrans = new String(params.getBytes("ISO-8859-1"),"UTF-8");
- params = java.NET.URLDecoder.decode(paramsTrans , "UTF-8");
问题解决.
注意: 页面端发出的数据作两次 encodeURI, 这个做的好处在于, 不管浏览器用户在页面来设置编码, 服务器所采用的编码来做一次 URLencode 转换成 UTF-8.
encodeURL 函数主要是来对 URI 来做转码, 它默认是采用的 UTF-8 的编码.
本文来自 jQuery 答疑 https://www.html.cn/qa/jquery/ 栏目, 欢迎学习!
来源: http://www.css88.com/qa/jquery/15497.html