zoukankan      html  css  js  c++  java
  • escape()、encodeURI()、encodeURIComponent()三种编码方式的区别

      最近在项目中都遇到了编码的问题,有对字符串进行编码的,也有对URL进行编码了,明明是挺简单的问题,但着实也给自己挖了好多坑啊,所以今天来记录一下这三种编码方式的区别。

    一、区别

    1、escape()

      escape函数是对字符串进行编码的,作用是让他们在所有电脑上可见。编码之后的效果是%XX或者%uXXXX这种形式。解码函数:unescape()

      其中 ASCII字母、数字、@*/+ ,这几个字符不会被编码,其余的都会。同时这个方法只适用于字符串,不适用于URL编码

    2、encodeURI()和encodeURIComponent()是一类

      这两种方法都是对URL进行编码的,唯一的区别是编码的范围不一样。

      encodeURI方法不会对下列字符编码 :ASCII字母、数字、~!@#$&*()=:/,;?+'。解码函数:decodeURI()

      encodeURIComponent方法不会对下列字符编码: ASCII字母、数字、~!*()'解码函数:decodeURIComponent()

      由此可见,encodeURIComponent编码范围比encodeURI的大。

    二、应用范围

      如果只是对字符串进行编码,与URL没有任何关系,那么escape方法是最合适的。

      如果要编码整个URL,那就用encodeURI方法。

      如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码

      如果要编码URL,但需要跳转地址,那只能用encodeURI方法,因为encodeURIComponent会对 :/ 进行编码,会导致没法跳转地址。

      
      
     
  • 相关阅读:
    C++中整型变量的存储大小和范围
    A1038 Recover the Smallest Number (30 分)
    A1067 Sort with Swap(0, i) (25 分)
    A1037 Magic Coupon (25 分)
    A1033 To Fill or Not to Fill (25 分)
    A1070 Mooncake (25 分)
    js 获取控件
    C#代码对SQL数据库添加表或者视图
    JS 动态操作表格
    jQuery取得下拉框选择的文本与值
  • 原文地址:https://www.cnblogs.com/daheiylx/p/12504210.html
Copyright © 2011-2022 走看看