zoukankan      html  css  js  c++  java
  • escape、encodeURI和encodeURIComponent的区别及使用

    编码

    javascript中的编码函数有三种

    • escape(string)
    • encodeURI(string)
    • encodeURIComponent(string)

    解码

    相应的解码函数也有以下三种

    • unescape(string)
    • unencodeURI(string)
    • unencodeURIComponent(string)

    以上三种编码函数都是将指定的字符串按照各自的方式转变为浏览器或脚本可识别的形式,常见于对汉字进行操作,避免出现乱码的情况

    用法及区别

    • escape(string)

      • 将字符串string转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对以下标点符号进行编码:-_./
      • 例如
      escape('汉字 你123abcABC'); //"%u6C49%u5B57%20%u4F60123abcABC"
      escape('-_./'); //"-_./"
      escape('"'); //"%22"
      escape(":"); //"%3A"
      
      • 说明
        从以上结果中表明:escape(string)除字母、数字以及一些特殊字符(-_./)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为%u开头的四位十六进制数(%u6C49),英文标点符号被转换为%开头的两位十六进制(%20
    • encodeURI(string)

      • 将字符串string转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对以下符号进行编码:-_.!~*'/();?:@&=+$,#
      • 例如
      encodeURI('汉'); //"%E6%B1%89"
      encodeURI('汉字 你123abcABC'); //"%E6%B1%89%E5%AD%97%20%E4%BD%A0123abcABC"
      encodeURI("-_.!~*'/();?:@&=+$,#"); //"-_.!~*'/();?:@&=+$,#"
      encodeURI('"'); //"%22"
      
      • 说明
        从以上结果中表明:encodeURI(string)除字母、数字以及一些特殊字符(-_.!~*'/();?:@&=+$,#)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为三组%开头的两位十六进制数(%E6%B1%89),英文标点符号被转换为%开头的两位十六进制(%20
    • encodeURIComponent(string)

      • 将字符串string转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对以下符号进行编码:-_.!~*'()
      • 例如
      encodeURIComponent('汉'); //"%E6%B1%89"
      encodeURIComponent('汉字 你123abcABC'); //"%E6%B1%89%E5%AD%97%20%E4%BD%A0123abcABC"
      encodeURIComponent("-_.!~*'()"); //"-_.!~*'()"
      encodeURIComponent('"'); //"%22"
      
      • 说明
        从以上结果中表明:encodeURIComponent(string)除字母、数字以及一些特殊字符(-_.!~*'())外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为三组%开头的两位十六进制数(%E6%B1%89),英文标点符号被转换为%开头的两位十六进制(%20

    总结

    • 综上
      • escape(string)不能用于对url进行编码,多用于返回字符的Unicode编码
      • encodeURI(string)可以对整个url进行编码
      • encodeURIComponent(string)不能应用于整个url编码,多用于对地址后的参数值进行编码
  • 相关阅读:
    系统架构
    创造HTTPS的是个神
    为Chrome开发插件提高工作效率
    Javascript 控制style 小结
    svcutil 生成代理类时的问题
    xeam Build Definition Extension uninstall 卸载
    看看 Delphi XE2 为 VCL 提供的 14 种样式
    FireMonkey 绘图(1)
    终于, Delphi XE2 携带 GDI+ 库了
    关于禁止程序重复启动的另一种需要与实现
  • 原文地址:https://www.cnblogs.com/tian-xie/p/7728288.html
Copyright © 2011-2022 走看看