表单序列化及编码问题

1、encodeURI(encodeURI(decodeURIComponent($("#subForm").serialize(),true)))

serialize()方法作用于一个JQuery对象,它能够将DOM元素内容序列化为字符串,用于ajax请求。通过使用serialize()方法,可以提交本页面的所有域,

用字符串方式时,需要注意对字符编码(中文问题),如果不希望编码带来麻烦,可以使用serialize()方法,它会自动编码。

  

javascript使用encodeURIComponent编码一次,如果是作为Url请求发送,浏览器是自动会作一次解码,
编码方式为浏览器默认。这样在一次编码后,请求到后台后,比如中文就成为乱码了。
中间即使编码方式是一致也会乱码。解决方法是在前台javascript使用encodeURIComponentg两次,
这样浏览器解码一次后,还是一种编码后的字符,传递到后台就不会是乱码,当然你得在后台做一次解码工作。

  

2、decodeURI()和decodeURIComponent()函数的区别

decodeURI() 函数可对 encodeURI() 函数编码过的URI 进行解码,

decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码

主要区别是encodeURI()不会对自身属于URI的特殊字符进行编码,比如&,#,?等,encodeURIComponent()会对任何发现的非标准字符进行编码

eg:

var test1="http://www.wljcz.com/My first/";  
var nn=encodeURI(test1);  
var now=decodeURI(test1);  
document.write(nn+ "<br />");  
document.write(now);  
  
var test1="http://www.wljcz.com/My first/";  
var bb=encodeURIComponent(test1);  
var nnow=decodeURIComponent(bb);  
document.write(bb+ "<br />");  
document.write(nnow);  

  

其运行结果为:

http://www.wljcz.com/My%20first/
http://www.wljcz.com/My first/

http%3A%2F%2Fwww.wljcz.com%2FMy%20first%2F
http://www.wljcz.com/My first/

关注公众号:CS尼克。我们一起学习计算机相关知识

原文地址:https://www.cnblogs.com/shueixue/p/5750501.html