js 传值 针对特殊符号 编码 解码

        在工作中会遇到一些特殊字符需要处理或者需要传给后台,我也是遇到了好几次这种情况,每次都是马马虎虎的过去了,但是感觉用到的频率还是很高的,不能每次都是百度去查这些高频用的。也趁着国庆假期结束,调整心情的阶段做一个总结。

在js中,有3个常用的字符串编码函数:

1、escape(),与之对应的解码的函数是 unescape()

2、encodeURI(),与之对应的解码的函数是 decodeURI()

3、encodeURIComponent(),与之对应的解码的函数是 decodeURIComponent()
 


下面就来详细的说下这个3个的区别

1、传递参数时需要使用encodeURIComponent()函数,这样组合的url 才不会被#等特殊字符截断。


2、url 跳转时可以整体使用encodeURI()函数

例如:Location.href="/encodeURI"("http://cang.baidu.com/do/s?word=百度&ct=21");

3、js使用数据时可以使用escape函数

例如:搜藏中history纪录。

4、  escape()对0-255以外的unicode值进行编码时输出%u****格式

其它情况下escape(),encodeURI(),encodeURIComponent() 编码的结果相同。


一般情况下最多使用的应为encodeURIComponent()函数,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent()时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

1、escape()函数不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。

2、encodeURI()函数不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

3、encodeURIComponent()函数不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,267评论 0 4
  • 依稀还记得年幼读书的时候,我们很努力。 为了考高那么一点分数,为了上升那几个排名。 写作文的时候,我们张口闭口就提...
    一川藏阅读 152评论 0 2
  • 文|郑萌伟 在广州恒大淘宝与天津亿利的比赛中,恒大在80分钟后连入三球。郜林打破僵局,高拉特顺势而为,张文钊一射一...
    郑萌伟足球观察阅读 195评论 0 1
  • 没想到龙猫和兔子争风吃醋了。龙猫最擅长大小便攻击。兔子也差不多
    大姨妈要按时来阅读 352评论 0 0