• 一张图看懂encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别


    https://www.cnblogs.com/shuiyi/p/5277233.html

    一、这四个方法的用处

    1、用来编码和解码URI的

    统一资源标识符,或叫做 URI,是用来标识互联网上的资源(例如,网页或文件)和怎样访问这些资源的传输协议(例如,HTTP 或 FTP)的字符串。除了encodeURI、encodeURIComponent、decodeURI、decodeURIComponent四个用来编码和解码 URI 的函数之外 ECMAScript 语言自身不提供任何使用 URL 的支持。

    2、URI组成形式
    一个 URI 是由组件分隔符分割的组件序列组成。其一般形式是:

    Scheme : First / Second ; Third ? Fourth

    其中斜体的名字代表组件;“:”, “/”, “;”,“?”是当作分隔符的保留字符

    3、有和不同?

    encodeURI 和 decodeURI 函数操作的是完整的 URI;这俩函数假定 URI 中的任何保留字符都有特殊意义,所有不会编码它们。

    encodeURIComponent 和 decodeURIComponent 函数操作的是组成 URI 的个别组件;这俩函数假定任何保留字符都代表普通文本,所以必须编码它们,所以它们(保留字符)出现在一个完整 URI 的组件里面时不会被解释成保留字符了。

    以上说明摘自ECMAScript标准,为了容易读懂做了点编辑加工。

    4、图解四个函数的不同:

    ECMA对这四个函数还做了详细解释,可能是为了写的更逻辑化一些,采用了类似变量配合逻辑的写法来说明,但是让初学者看得云里雾里的特别绕,所以有必要把它写得更像是人读的东西……

     图解转义与反转义URI的四种方法

    当 URI 里包含一个没在上面列出的字符或有时不想让给定的保留字符有特殊意义,那么必须编码这个字符。字符被转换成 UTF-8 编码,首先从 UT​​F-16 转换成相应的代码点值的替代。然后返回的字节序列转换为一个字符串,每个字节用一个“%xx”形式的转移序列表示。(具体转换规则可以参考抽象操作EncodeDecode的说明

     
     
    标签: js

    小结:

    1 {}属于第四类,使用encodeURIComponent或encodeURI进行编码;

    2 & 属于保留字符,仅可通过encodeURIComponent 转义

    3 % 属于第四类,使用encodeURIComponent或encodeURI进行编码;

     

    经过实践:

    get    低版本tomcat  {} 不用转义

                                                        {} & %                                                                                             
    encodeURIComponent              ok ok ok
    encodeURI                                  ok not ok ok

    post 请求,都不需要转义,有可能浏览器帮忙做了

  • 相关阅读:
    123
    使用Rsync自动实现网站增量备份
    一文了解 Java 各发行版本及新特性
    使用java命令出现Error: A JNI error has occurred, please check your installation and try again的错误
    orElse() 和orElseGet()方法之间的区别
    第一个Hello.java出现错误:找不到或无法加载主类Hello
    位运算统计二进制整数中1的个数
    GIMP使用笔记
    使用V2R做反向代理内网穿透
    Odoo 即时通讯 IM 设计思路
  • 原文地址:https://www.cnblogs.com/silyvin/p/9106634.html
Copyright © 2020-2023  润新知