escape,encodeURL,encodeURLComponent是什么,他们的区别是什么

97 阅读1分钟

escape(), encodeURI(), encodeURIComponent() 是 JavaScript 中用于编码字符串的函数,它们的作用和使用场景略有不同。下面逐个解释它们的含义和区别:

  1. escape():
    • escape() 函数用于对字符串进行编码,将字符串中的特殊字符转换成十六进制的转义序列(例如 %20 代表空格),以便在所有的计算机上都能正常显示。
    • 该方法已经被废弃,不推荐使用,因为它对非 ASCII 字符的处理不好,并且不安全,可能会导致 XSS 攻击。
    • 示例:
    var str = "This is a test!";
    var encodedStr = escape(str);
    console.log(encodedStr); // "This%20is%20a%20test%21"
    
  2. encodeURI():
    • encodeURI() 函数用于对整个 URI 进行编码,它会将 URI 中的特殊字符(除了 :/?#[]@!$&'()*+,;= 之外的字符)进行编码,以便在 URL 中使用。
    • 通常用于对整个 URL 进行编码,而不是对单个 URI 组件进行编码。
    • 示例:
    var uri = "https://www.example.com/my page.html";
    var encodedURI = encodeURI(uri);
    console.log(encodedURI); // "https://www.example.com/my%20page.html"
    
  3. encodeURIComponent():
    • encodeURIComponent() 函数用于对 URI 组件进行编码,它会对 URI 中的特殊字符(包括所有非字母数字字符)进行编码,以便在 URL 中使用。
    • 通常用于对 URI 中的特定组件(如查询字符串参数)进行编码。
    • 示例:
    var param = "key=value&name=John Doe";
    var encodedParam = encodeURIComponent(param);
    console.log(encodedParam); // "key%3Dvalue%26name%3DJohn%20Doe"
    

区别:

  • escape()encodeURI() 已经被废弃,不推荐使用,因为它们对一些字符的处理不够严格,可能导致安全漏洞。
  • encodeURIComponent() 是最常用的字符串编码函数,它对所有非字母数字字符进行编码,包括对特殊字符的处理更加严格,通常用于对 URI 组件进行编码,例如查询字符串参数。