1、encodeURI(encodeURI(decodeURIComponent($("#subForm").serialize(),true)))
serialize()方法作用于一个JQuery对象,它能够将DOM元素内容序列化为字符串,用于ajax请求。通过使用serialize()方法,可以提交本页面的所有域,
用字符串方式时,需要注意对字符编码(中文问题),如果不希望编码带来麻烦,可以使用serialize()方法,它会自动编码。
javascript使用encodeURIComponent编码一次,如果是作为Url请求发送,浏览器是自动会作一次解码,
编码方式为浏览器默认。这样在一次编码后,请求到后台后,比如中文就成为乱码了。
中间即使编码方式是一致也会乱码。解决方法是在前台javascript使用encodeURIComponentg两次,
这样浏览器解码一次后,还是一种编码后的字符,传递到后台就不会是乱码,当然你得在后台做一次解码工作。
编码方式为浏览器默认。这样在一次编码后,请求到后台后,比如中文就成为乱码了。
中间即使编码方式是一致也会乱码。解决方法是在前台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尼克。我们一起学习计算机相关知识