zoukankan      html  css  js  c++  java
  • http学习--URL字符

    URL的特性

    URL 是可移植的(portable)。

    URL要统一地命名因特网上所有的资源,这也就意味着要通过各种不同的协议来传送这些资源。

    这些协议在传输数据时都会使用不同的机制,所以,设计 URL,使其可以通过任意因特网协议安全地传输是很重要的。

    安全传输意味着 URL 的传输不能丢失信息。

    有些协议,比如传输电子邮件的简单邮件传输协议(Simple Mail Transfer Protocol,SMTP),所使用的传输方法就会剥去一些特定的字符。

    为了避开这些问题,URL 字符要求被所有网络协议所识别,只能使用一些相对较小的通用的安全字母表中的字符。

    URL字符使用的是US-ASCII 字符集

    URL是可供人类阅读

    因此,有些字符虽然是可移植的,但因为不可见、不可打印,无法阅读,所以也不能在 URL 中使用。

    比如US-ASCII 字符集中少数用于文本格式和硬件通知的不可打印控制字符。

    URL 还得是完整的

    URL 的设计者们认识到有时人们可能会希望 URL 中包含除通用的安全字母表之外的二进制数据或其他字符。

    因此,需要有一种转义机制,能够将不安全的字符编码为安全字符,再进行传输。

    通过转义序列,就可以用 US-ASCII 字符集有限子集对任意字符值或数据进行编码了,这样就实现了可移植性和完整性。

    编码机制

    一个百分号(%),后面跟着两个表示字符 ASCII 码的 十六进制数。

    实例

    字  符   ASCII码   示例URL 
     ~   126(0x7E)   http://www.joes-hardware.com/%7Ejoe 
     空格   32(0x20)   http://www.joes-hardware.com/more%20tools.html 
     %   37(0x25)   http://www.joes-hardware.com/100%25satisfaction.html  

    字符限制

    在 URL 中,

      有几个字符被保留起来,有着特殊的含义。

      有些字符不在定义的US-ASCII 可打印字符集中。

      还有些字符会与某些因特网网关和协议产生混淆,因此不赞成使用。

    因此,在将其用于保留用途之外的场合时,要在 URL 中对其进行编码。

    总结:

    URL的可移植性决定了使用所有协议都可识别的US-ASCII 字符集

    URL的可阅读性去掉了US-ASCII 字符集中无法阅读的少数用于文本格式和硬件通知的不可打印控制字符

    URL的完整性决定了可以用 US-ASCII 字符集的有限子集对US-ASCII 字符集以外的非安全字符进行编码

    另外,某些特殊字符和保留字符用于保留用途之外的场合时,也要在 URL 中对其进行编码。

    以上就解释了为什么要对URL进行编码

    URL编码表


    backspace %08
    I %49
    v %76
    ó %D3
    tab %09
    J %4A
    w %77
    Ô %D4
    linefeed %0A
    K %4B
    x %78
    Õ %D5
    creturn %0D
    L %4C
    y %79
    Ö %D6
    space %20
    M %4D
    z %7A
    Ø %D8
    ! %21
    N %4E
    { %7B
    ù %D9
    " %22
    O %4F
    | %7C
    ú  %DA
    # %23
    P %50
    } %7D
    Û %DB
    $ %24
    Q %51
    ~ %7E
    ü %DC
    % %25
    R %52
    ¢ %A2
    Y %DD
    & %26
    S %53
    £ %A3
    T %DE
    ' %27
    T %54
    ¥ %A5
    ß %DF
    ( %28
    U %55
    | %A6
    à %E0
    ) %29
    V %56
    § %A7
    á %E1
    * %2A
    W %57
    « %AB
    a %E2
    + %2B
    X %58
    ¬ %AC
    ã %E3
    , %2C
    Y %59
    ˉ %AD
    ä %E4
    - %2D
    Z %5A
    o %B0
    å %E5
    . %2E
    [ %5B
    ± %B1
    æ %E6
    / %2F
    %5C
    a %B2
    ç %E7
    0 %30
    ] %5D
    , %B4
    è %E8
    1 %31
    ^ %5E
    μ %B5
    é %E9
    2 %32
    _ %5F
    » %BB
    ê %EA
    3 %33
    ` %60
    ¼ %BC
    ë %EB
    4 %34
    a %61
    ½ %BD
    ì %EC
    5 %35
    b %62
    ¿ %BF
    í %ED
    6 %36
    c %63
    à %C0
    î %EE
    7 %37
    d %64
    á %C1
    ï %EF
    8 %38
    e %65
    Â %C2
    e %F0
    9 %39
    f %66
    Ã %C3
    ñ %F1
    : %3A
    g %67
    Ä %C4
    ò %F2
    ; %3B
    h %68
    Å %C5
    ó %F3
    < %3C
    i %69
    &AElig; %C6
    &ocirc; %F4
    = %3D
    j %6A
    &Ccedil; %C7
    &otilde; %F5
    > %3E
    k %6B
    è %C8
    &ouml; %F6
    %3F
    l %6C
    é  %C9
    ÷  %F7
    @ %40
    m %6D
    ê %CA
    &oslash; %F8
    A %41
    n %6E
    &Euml; %CB
    ù %F9
    B %42
    o %6F
    ì  %CC
    ú  %FA
    C %43
    p %70
    í %CD
    &ucirc; %FB
    D %44
    q %71
    &Icirc; %CE
    ü %FC
    E %45
    r %72
    &Iuml; %CF
    y %FD
    F %46
    s %73
    D %D0
    t %FE
    G %47
    t %74
    &Ntilde; %D1
    &yuml; %FF
    H %48
    u %75
    ò %D2
     

     

     
  • 相关阅读:
    Effective STL 学习笔记 Item 16:vector, string & C API
    在 Python 中使用 GDB 来调试 转载
    Effective STL 学习笔记14: Use reserve to avoid unnecessary reallocations.
    Effective STL 学习笔记: 多用 vector & string
    Effective STL 学习笔记: Thread Safety and STL Container
    Effective STL 笔记 -- Item 6 ~ 7: Container and Object Pointer
    How to omit h1 title heading in HTML export
    Introduction to MWB Minor Mode
    Effective STL 笔记 -- Item 9: Choose carefully among erasing options
    Redis简介
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/11556227.html
Copyright © 2011-2022 走看看