javascript编码解码

RFC 1738做出规定"只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL"。所以当链接中包含中文或者其他不符合规定的字符的时...

RFC 1738做出规定"只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL"。所以当链接中包含中文或者其他不符合规定的字符的时候都需要经过编码的。然而由于浏览器厂商众多,对url进行编码的形式多种多样,如果不对编码进行统一处理,会对代码开发造成很大的影响,出现乱码现象。
url编码的混乱
这里我直接提供一篇阮一峰其中包含这些内容:
http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

解决编码统一问题
javascript为我们提供了3个对字符串进行URL编码的方法:escape ,encodeURI,encodeURIComponent

a.escape
由于eccape已经被建议放弃所以大家就不要用了

b.encodeURI
encodeURI不编码的82个字符:!#$&'()*+,/:;=?@-._~0-9a-zA-Z,从中可以看不会对url中的保留字符进行编码,所以适合url整体编码

c. encodeURIComponent
这个对于我们来说是最有用的一个编码函数,encodeURIComponent不编码的字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z。可以看出对url中的保留字进行的编码,所以当传递的参数中
包含这些url中的保留字(@,&,=),就可以通过这个方法编码后传输       


其他问题
a.javascript的编码方法是使用的utf-8编码(十六进制的),在链接中看到的都是%+utf-8编码。例如:空格的编码是%20
b.对于空格使用的编码并不是%20,而是+号,如果表单使用的是Post方法提交的,我们可以在HTTP头中看到有一个Content-Type的header,值为application/x-www-form-urlencoded。

参考文章:
http://kb.cnblogs.com/page/133765/
http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

  • 发表于 2017-02-22 16:41
  • 阅读 ( 430 )
  • 分类:互联网

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
mni_Ya

28 篇文章

作家榜 »

  1. mni_Ya 28 文章
  2. qtb000 4 文章
  3. we 1 文章
  4. 446810059 0 文章
  5. langlang 0 文章
  6. 请叫我 杜子 0 文章
  7. 木夕心 0 文章
  8. Walker 0 文章