• URL编码


    一、"%编码"规范:( "%" 其后跟随两位的十六进制数,共256种)

    1. ASCII字符ASCII 是7比特字符集,包含了128个不同的字符值。此处有127个,少了设备控制字符中的DEL

      • 非转义字符:不编码;

    ASCII 字符

    URL-编码

    !

    %21

    '

    %27

    (

    %28

    )

    %29

    *

    %2A

    -

    %2D

    .

    %2E

    0

    %30

    1

    %31

    2

    %32

    3

    %33

    4

    %34

    5

    %35

    6

    %36

    7

    %37

    8

    %38

    9

    %39

    A

    %41

    B

    %42

    C

    %43

    D

    %44

    E

    %45

    F

    %46

    G

    %47

    H

    %48

    I

    %49

    J

    %4A

    K

    %4B

    L

    %4C

    M

    %4D

    N

    %4E

    O

    %4F

    P

    %50

    Q

    %51

    R

    %52

    S

    %53

    T

    %54

    U

    %55

    V

    %56

    W

    %57

    X

    %58

    Y

    %59

    Z

    %5A

    _

    %5F

    a

    %61

    b

    %62

    c

    %63

    d

    %64

    e

    %65

    f

    %66

    g

    %67

    h

    %68

    i

    %69

    j

    %6A

    k

    %6B

    l

    %6C

    m

    %6D

    n

    %6E

    o

    %6F

    p

    %70

    q

    %71

    r

    %72

    s

    %73

    t

    %74

    u

    %75

    v

    %76

    w

    %77

    x

    %78

    y

    %79

    z

    %7A

    ~

    %7E

       

      • 保留字符encodeURIComponent()编码,encodeURI()不编码

    ASCII 字符

    URL-编码

    $

    %24

    &

    %26

    +

    %2B

    ,

    %2C

    /

    %2F

    :

    %3A

    ;

    %3B

    =

    %3D

    ?

    %3F

    @

    %40

            编码原因

          • 保留字具有特殊的含义。如"&"表示参数分隔符,"="表示参数keyvalue的连接
          • 如果 value 字符串本身包含了 = 或者 & ,如宝洁公司的简称为P&G,假设需要当做参数去传递,那么可能URL所带参数可能会是这样 ?name=P&G&t=1450591802326,因为参数中多了一个&势必会造成接收 URL 的服务器解析错误,因此必须将引起歧义的 & 和 = 符号进行转义, 也就是对其进行编码。
      • 数字符号encodeURIComponent()编码,encodeURI()不编码

    ASCII 字符

    URL-编码

    #

    %23

      • 其他字符:编码

    ASCII 字符

    URL-编码

    space

    %20

    "

    %22

    %

    %25

    <

    %3C

    >

    %3E

    [

    %5B

    %5C

    ]

    %5D

    ^

    %5E

    `

    %60

    {

    %7B

    |

    %7C

    }

    %7D

    ASCII 设备控制字符

    描述

    URL-编码

    NUL

    null character

    %00

    SOH

    start of header

    %01

    STX

    start of text

    %02

    ETX

    end of text

    %03

    EOT

    end of transmission

    %04

    ENQ

    enquiry

    %05

    ACK

    acknowledge

    %06

    BEL

    bell (ring)

    %07

    BS

    backspace

    %08

    HT

    horizontal tab

    %09

    LF

    line feed

    %0A

    VT

    vertical tab

    %0B

    FF

    form feed

    %0C

    CR

    carriage return

    %0D

    SO

    shift out

    %0E

    SI

    shift in

    %0F

    DLE

    data link escape

    %10

    DC1

    device control 1

    %11

    DC2

    device control 2

    %12

    DC3

    device control 3

    %13

    DC4

    device control 4

    %14

    NAK

    negative acknowledge

    %15

    SYN

    synchronize

    %16

    ETB

    end transmission block

    %17

    CAN

    cancel

    %18

    EM

    end of medium

    %19

    SUB

    substitute

    %1A

    ESC

    escape

    %1B

    FS

    file separator

    %1C

    GS

    group separator

    %1D

    RS

    record separator

    %1E

    US

    unit separator

    %1F

       

    2. 非ASCII字符(129个):取其Unicode内码,然后加上"%"前缀将该字符进行编码

    非ASCII 字符

    URL-编码

      

    %7F

    `

    %80

    

    %81

    %82

    ƒ

    %83

    "

    %84

    %85

    %86

    %87

    ˆ

    %88

    %89

    Š

    %8A

    %8B

    Œ

    %8C

    

    %8D

    Ž

    %8E

    

    %8F

    

    %90

    '

    %91

    '

    %92

    "

    %93

    "

    %94

    %95

    %96

    %97

    ˜

    %98

    %99

    š

    %9A

    %9B

    œ

    %9C

    

    %9D

    ž

    %9E

    Ÿ

    %9F

      

    %A0

    ¡

    %A1

    ¢

    %A2

    £

    %A3

    ¤

    %A4

    ¥

    %A5

    ¦

    %A6

    §

    %A7

    ¨

    %A8

    ©

    %A9

    ª

    %AA

    «

    %AB

    ¬

    %AC

      

    %AD

    ®

    %AE

    ¯

    %AF

    °

    %B0

    ±

    %B1

    ²

    %B2

    ³

    %B3

    ´

    %B4

    µ

    %B5

    %B6

    ·

    %B7

    ¸

    %B8

    ¹

    %B9

    º

    %BA

    »

    %BB

    ¼

    %BC

    ½

    %BD

    ¾

    %BE

    ¿

    %BF

    À

    %C0

    Á

    %C1

    Â

    %C2

    Ã

    %C3

    Ä

    %C4

    Å

    %C5

    Æ

    %C6

    Ç

    %C7

    È

    %C8

    É

    %C9

    Ê

    %CA

    Ë

    %CB

    Ì

    %CC

    Í

    %CD

    Î

    %CE

    Ï

    %CF

    Ð

    %D0

    Ñ

    %D1

    Ò

    %D2

    Ó

    %D3

    Ô

    %D4

    Õ

    %D5

    Ö

    %D6

    ×

    %D7

    Ø

    %D8

    Ù

    %D9

    Ú

    %DA

    Û

    %DB

    Ü

    %DC

    Ý

    %DD

    Þ

    %DE

    ß

    %DF

    à

    %E0

    á

    %E1

    â

    %E2

    ã

    %E3

    ä

    %E4

    å

    %E5

    æ

    %E6

    ç

    %E7

    è

    %E8

    é

    %E9

    ê

    %EA

    ë

    %EB

    ì

    %EC

    í

    %ED

    î

    %EE

    ï

    %EF

    ð

    %F0

    ñ

    %F1

    ò

    %F2

    ó

    %F3

    ô

    %F4

    õ

    %F5

    ö

    %F6

    ÷

    %F7

    ø

    %F8

    ù

    %F9

    ú

    %FA

    û

    %FB

    ü

    %FC

    ý

    %FD

    þ

    %FE

    ÿ

    %FF

       

       

    二、相关函数

    1.  encodeURI()

    • 对一个完整的URI进行编码对除“非转义字符”、“保留字符”、“数字符号”以外的字符编码
      • 原因:URI是完整的URI,无需对那些保留的并且在URI中有特殊意思的字符进行编码。
      • encodeURI 自身无法产生能适用于HTTP GET 或 POST 请求的URI,例如对于 XMLHTTPRequests, 因为 "&", "+", 和 "=" 等保留字符不会被编码,然而在 GET 和 POST 请求中它们是特殊字符。此时,encodeURIComponent方法可以对这些字符编码。
    • 语法:
      • encodeURI(URI)
        • 参数URI:一个完整的URI
    • 例:

    encodeURI("http://www.cnblogs.com/season-huang/some other thing");

    //"http://www.cnblogs.com/season-huang/some%20other%20thing";

    2. decodeURI()

    • 将已编码 URI 中所有能识别的转义序列转换成原字符,但不能解码那些不会被 encodeURI 编码的内容(例如 "#")
    • 语法:
      • decodeURI(encodedURI)
        • 参数encodedURI:一个完整的编码过的URI

    3. encodeURIComponent()

    • 对URI的组成部分进行编码
    • 作用:对 URL 中的参数进行编码,而不是对整个 URL 进行编码
    • 对除“非转义字符”以外的字符编码(包括“保留字符”、“数字符号”)
    • 语法:
      • encodeURIComponent(str)
        • 参数str:字符串,URI 的组成部分
    • 例:
      • 错误的用法:

    var URL = "http://www.a.com?foo=http://www.b.com?t=123&s=456";

    encodeURIComponent(URL);

    // "http%3A%2F%2Fwww.a.com%3Ffoo%3Dhttp%3A%2F%2Fwww.b.com%3Ft%3D123%26s%3D456"

      • 正确的用法:

    var param = "http://www.b.com?t=123&s=456"; // 要被编码的参数

    URL = "http://www.a.com?foo="+encodeURIComponent(param);

    //"http://www.a.com?foo=http%3A%2F%2Fwww.b.com%3Ft%3D123%26s%3D456"

    4. decodeURIComponent()

    • 用于解码由 encodeURIComponent 方法或者其它类似方法编码的部分
    • 语法:
      • decodeURIComponent(encodedURI)
        • 参数encodedURI:编码后的部分URI
  • 相关阅读:
    【C/C++】qsort函数的使用方法和细节
    MOOC C++笔记(五):继承
    MOOC 数据库系统笔记(二):数据库系统的基本结构及其演变发展
    PTA A1015
    MOOC 数据库系统笔记(一):初步认识数据库系统
    PTA A1014
    MOOC C++笔记(四):运算符重载
    PTA A1013
    PTA A1011&A1012
    1.1.22 同样的文档,行数不一样
  • 原文地址:https://www.cnblogs.com/xuehaoyue/p/6624306.html
Copyright © 2020-2023  润新知