我们在web开发的过程中,有时参数是中文的,或者是一些比较特殊的符合如~!@@#¥#¥%%…………&**(等,这些请求在链接里面如果通过get方式还是可以传送的,post就不行了。需要转码。
转码可以使用jq里面的几个方法。
1.escape()
这个方法除了字母,数字,和特定的符号不转,其他都转。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> </head> <script type="text/javascript" src="js/jquery-1.8.3.js" ></script> <body bgcolor="azure"> </body> </html> <script type="text/javascript"> var i=escape("http://www.w3cSchool.cn"); console.log(i);//test.html:14 http%3A//www.w3cSchool.cn var j=escape(".@!#$%^&*()_+=-?';.,][\~`{}<>?") //.@%21%23%24%25%5E%26*%28%29_+%3D-%3F%27%3B.%2C%5D%5B%7E%60%7B%7D%3C%3E%3F console.log(j) </script>
2.encodeURI()
除了合法字符都不会被编码转换,其他都转,合法的如下:- _ . ! ~ * ' ( )
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> </head> <script type="text/javascript" src="js/jquery-1.8.3.js" ></script> <body bgcolor="azure"> </body> </html> <script type="text/javascript"> var i=encodeURI("http://www.w3cSchool.cn"); console.log(i);//http://www.w3cSchool.cn var j=encodeURI(".@!#$%^&*()_+=-?';.,][\~`{}<>?") //.@!#$%25%5E&*()_+=-?';.,%5D%5B~%60%7B%7D%3C%3E? console.log(j) </script>
3.encodeURIComponent()特殊符号转,中文也转,最常用。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> </head> <script type="text/javascript" src="js/jquery-1.8.3.js" ></script> <body bgcolor="azure"> </body> </html> <script type="text/javascript"> var i=encodeURIComponent("http://www.w3cSchool.cn哈啊哈"); console.log(i);//http%3A%2F%2Fwww.w3cSchool.cn%E5%93%88%E5%95%8A%E5%93%88 var j=encodeURIComponent(".@!#$%^&*()_+=-?';.,][\~`{}<>?") //.%40!%23%24%25%5E%26*()_%2B%3D-%3F'%3B.%2C%5D%5B~%60%7B%7D%3C%3E%3F console.log(j) </script>