URL 编码
URL 编码就是将 URLs 中不宜打印的字符或者具有特殊意义的字符转换为 Web 浏览器和服务器明白且普遍接受的表示法。 这些字符包括:
ASCII 控制字符 - 不宜打印的字符通常用于输出控制。字符范围是十六进制的 00-1F(十进制的 0-31)和 7F(十进制的 127)。下面提供了完整的编码表。
非 ASCII 控制字符 - 这些字符超出了 128 个 ASCII 字符集的范围。这个范围是 ISO-拉丁字符集的一部分以及包含整个十六进制的 ISO-拉丁字符集 00-FF (十进制的 128-255)的“前半部分”。下面提供了完整的编码表。
保留字符 - 诸如美元符号,和号,加号,通用符号,正斜杠,冒号,分好,等号,问号以及 “at”这类符号。所有这些符号在 URL 内都有不同的意义,因此需要编码。下面提供了完整的编码表。
不安全字符 - 包括空格,问号,小于符号,大于符号,磅字符,百分比符号,大括号左边部分,大括号右边部分,管道符,反斜杠,插入符号,波浪线。左方括号,右方括号,沉音符。出于某些原因,这些字符出现在 URLs 中存在被误解的可能性。这些字符也应该始终被编码。下面提供了完整的编码表。
编码表示法需要三个字符替换期望的字符:一个百分号,两个在 ASCII 字符集中表示字符位置的十六进制数字、
示例
最常见的特殊字符之一便是空格。我们不能在 URL 中直接输入一个空格。空格在字符集中就是十六进制的 20。因此请求服务器时可以使用 %20 表示空格。
复制代码代码如下:http://www.example.com/new%20pricing.html
这个 URL 实际上是从 www.example.com 检索一个名为 new pricing.html 的文档。
ASCII 控制字符编码
包括十六进制的 00-1F(十进制的 0-31)和 7F(十进制的 127)字符码。
    
        
            十进制格式 | 十六进制值 | 字符 | URL 编码 | 
        
        
            0 
            00 
            
            %00 
        
        
            1 
            01 
            
            %01 
        
        
            2 
            02 
            
            %02 
        
        
            3 
            03 
            
            %03 
        
        
            4 
            04 
            
            %04 
        
        
            5 
            05 
            
            %05 
        
        
            6 
            06 
            
            %06 
        
        
            7 
            07 
            
            %07 
        
        
            8 
            08 
            退格符 
            %08 
        
        
            9 
            09 
            tab 
            %09 
        
        
            10 
            0a 
            换行符 
            %0a 
        
        
            11 
            0b 
            
            %0b 
        
        
            12 
            0c 
            
            %0c 
        
        
            13 
            0d 
            回车符 
            %0d 
        
        
            14 
            0e 
            
            %0e 
        
        
            15 
            0f 
            
            %0f 
        
        
            16 
            10 
            
            %10 
        
        
            17 
            11 
            
            %11 
        
        
            18 
            12 
            
            %12 
        
        
            19 
            13 
            
            %13 
        
        
            20 
            14 
            
            %14 
        
        
            21 
            15 
            
            %15 
        
        
            22 
            16 
            
            %16 
        
        
            23 
            17 
            
            %17 
        
        
            24 
            18 
            
            %18 
        
        
            25 
            19 
            
            %19 
        
        
            26 
            1a 
            
            %1a 
        
        
            27 
            1b 
            
            %1b 
        
        
            28 
            1c 
            
            %1c 
        
        
            29 
            1d 
            
            %1d 
        
        
            30 
            1e 
            
            %1e 
        
        
            31 
            1f 
            
            %1f 
        
        
            127 
            7f 
            
            %7f 
        
    
非 ASCII 控制字符编码
包括整个十六进制的 ISO-拉丁字符集 80-FF(十进制的 128-255)编码的“前半部分”。
    
        
            
十进制格式 | 十六进制值 | 字符 | URL 编码 | 
        
        
            128 
            80 
            € 
            %80 
        
        
            129 
            81 
            ? 
            %81 
        
        
            130 
            82 
            ? 
            %82 
        
        
            131 
            83 
            ? 
            %83 
        
        
            132 
            84 
            ? 
            %84 
        
        
            133 
            85 
            … 
            %85 
        
        
            134 
            86 
            ? 
            %86 
        
        
            135 
            87 
            ? 
            %87 
        
        
            136 
            88 
            ? 
            %88 
        
        
            137 
            89 
            ‰ 
            %89 
        
        
            138 
            8a 
            ? 
            %8a 
        
        
            139 
            8b 
            ? 
            %8b 
        
        
            140 
            8c 
            ? 
            %8c 
        
        
            141 
            8d 
            ? 
            %8d 
        
        
            142 
            8e 
            ? 
            %8e 
        
        
            143 
            8f 
            ? 
            %8f 
        
        
            144 
            90 
            ? 
            %90 
        
        
            145 
            91 
            ‘ 
            %91 
        
        
            146 
            92 
            ’ 
            %92 
        
        
            147 
            93 
            “ 
            %93 
        
        
            148 
            94 
            ” 
            %94 
        
        
            149 
            95 
            ? 
            %95 
        
        
            150 
            96 
            – 
            %96 
        
        
            151 
            97 
            — 
            %97 
        
        
            152 
            98 
            ? 
            %98 
        
        
            153 
            99 
            ? 
            %99 
        
        
            154 
            9a 
            ? 
            %9a 
        
        
            155 
            9b 
            ? 
            %9b 
        
        
            156 
            9c 
            ? 
            %9c 
        
        
            157 
            9d 
            ? 
            %9d 
        
        
            158 
            9e 
            ? 
            %9e 
        
        
            159 
            9f 
            ? 
            %9f 
        
        
            160 
            a0 
            
            %a0 
        
        
            161 
            a1 
            ? 
            %a1 
        
        
            162 
            a2 
            ¢ 
            %a2 
        
        
            163 
            a3 
            £ 
            %a3 
        
        
            164 
            a4 
            ¤ 
            %a4 
        
        
            165 
            a5 
            ¥ 
            %a5 
        
        
            166 
            a6 
            | 
            %a6 
        
        
            167 
            a7 
            § 
            %a7 
        
        
            168 
            a8 
            ¨ 
            %a8 
        
        
            169 
            a9 
            ? 
            %a9 
        
        
            170 
            aa 
            a 
            %aa 
        
        
            171 
            ab 
            ? 
            %ab 
        
        
            172 
            ac 
            ? 
            %ac 
        
        
            173 
            ad 
            - 
            %ad 
        
        
            174 
            ae 
            ? 
            %ae 
        
        
            175 
            af 
            ˉ 
            %af 
        
        
            176 
            b0 
            ° 
            %b0 
        
        
            177 
            b1 
            ± 
            %b1 
        
        
            178 
            b2 
            2 
            %b2 
        
        
            179 
            b3 
            3 
            %b3 
        
        
            180 
            b4 
            ′ 
            %b4 
        
        
            181 
            b5 
            μ 
            %b5 
        
        
            182 
            b6 
            ? 
            %b6 
        
        
            183 
            b7 
            · 
            %b7 
        
        
            184 
            b8 
            ? 
            %b8 
        
        
            185 
            b9 
            1 
            %b9 
        
        
            186 
            ba 
            o 
            %ba 
        
        
            187 
            bb 
            ? 
            %bb 
        
        
            188 
            bc 
            ? 
            %bc 
        
        
            189 
            bd 
            ? 
            %bd 
        
        
            190 
            be 
            ? 
            %be 
        
        
            191 
            bf 
            ? 
            %bf 
        
        
            192 
            c0 
            à 
            %c0 
        
        
            193 
            c1 
            á 
            %c1 
        
        
            194 
            c2 
            ? 
            %c2 
        
        
            195 
            c3 
            ? 
            %c3 
        
        
            196 
            c4 
            ? 
            %c4 
        
        
            197 
            c5 
            ? 
            %c5 
        
        
            198 
            c6 
            ? 
            %v6 
        
        
            199 
            c7 
            ? 
            %c7 
        
        
            200 
            c8 
            è 
            %c8 
        
        
            201 
            c9 
            é 
            %c9 
        
        
            202 
            ca 
            ê 
            %ca 
        
        
            203 
            cb 
            ? 
            %cb 
        
        
            204 
            cc 
            ì 
            %cc 
        
        
            205 
            cd 
            í 
            %cd 
        
        
            206 
            ce 
            ? 
            %ce 
        
        
            207 
            cf 
            ? 
            %cf 
        
        
            208 
            d0 
            D 
            %d0 
        
        
            209 
            d1 
            ? 
            %d1 
        
        
            210 
            d2 
            ò 
            %d2 
        
        
            211 
            d3 
            ó 
            %d3 
        
        
            212 
            d4 
            ? 
            %d4 
        
        
            213 
            d5 
            ? 
            %d5 
        
        
            214 
            d6 
            ? 
            %d6 
        
        
            215 
            d7 
            × 
            %d7 
        
        
            216 
            d8 
            ? 
            %d8 
        
        
            217 
            d9 
            ù 
            %d9 
        
        
            218 
            da 
            ú 
            %da 
        
        
            219 
            db 
            ? 
            %db 
        
        
            220 
            dc 
            ü 
            %dc 
        
        
            221 
            dd 
            Y 
            %dd 
        
        
            222 
            de 
            T 
            %de 
        
        
            223 
            df 
            ? 
            %df 
        
        
            224 
            e0 
            à 
            %e0 
        
        
            225 
            e1 
            á 
            %e1 
        
        
            226 
            e2 
            a 
            %e2 
        
        
            227 
            e3 
            ? 
            %e3 
        
        
            228 
            e4 
            ? 
            %e4 
        
        
            229 
            e5 
            ? 
            %e5 
        
        
            230 
            e6 
            ? 
            %e6 
        
        
            231 
            e7 
            ? 
            %e7 
        
        
            232 
            e8 
            è 
            %e8 
        
        
            233 
            e9 
            é 
            %e9 
        
        
            234 
            ea 
            ê 
            %ea 
        
        
            235 
            eb 
            ? 
            %eb 
        
        
            236 
            ec 
            ì 
            %ec 
        
        
            237 
            ed 
            í 
            %ed 
        
        
            238 
            ee 
            ? 
            %ee 
        
        
            239 
            ef 
            ? 
            %ef 
        
        
            240 
            f0 
            e 
            %f0 
        
        
            241 
            f1 
            ? 
            %f1 
        
        
            242 
            f2 
            ò 
            %f2 
        
        
            243 
            f3 
            ó 
            %f3 
        
        
            244 
            f4 
            ? 
            %f4 
        
        
            245 
            f5 
            ? 
            %f5 
        
        
            246 
            f6 
            ? 
            %f6 
        
        
            247 
            f7 
            ÷ 
            %f7 
        
        
            248 
            f8 
            ? 
            %f8 
        
        
            249 
            f9 
            ù 
            %f9 
        
        
            250 
            fa 
            ú 
            %fa 
        
        
            251 
            fb 
            ? 
            %fb 
        
        
            252 
            fc 
            ü 
            %fc 
        
        
            253 
            fd 
            y 
            %fd 
        
        
            254 
            fe 
            t 
            %fe 
        
        
            255 
            ff 
            ? 
            %ff 
        
    
保留字符编码
下表用于编码保留字符。
    
        
            
十进制格式 | 十六进制值 | 字符 | URL 编码 | 
        
        
            36 
            24 
            $ 
            %24 
        
        
            38 
            26 
            & 
            %26 
        
        
            43 
            2b 
            + 
            %2b 
        
        
            44 
            2c 
            , 
            %2c 
        
        
            47 
            2f 
            / 
            %2f 
        
        
            58 
            3a 
            : 
            %3a 
        
        
            59 
            3b 
            ; 
            %3b 
        
        
            61 
            3d 
            = 
            %3d 
        
        
            63 
            3f 
            ? 
            %3f 
        
        
            64 
            40 
            @ 
            %40 
        
    
不安全字符编码
下表用于编码不安全字符。
    
        
            
十进制格式 | 十六进制值 | 字符 | URL 编码 | 
        
        
            32 
            20 
            space 
            %20 
        
        
            34 
            22 
            " 
            %22 
        
        
            60 
            3c 
            < 
            %3c 
        
        
            62 
            3e 
            > 
            %3e 
        
        
            35 
            23 
            # 
            %23 
        
        
            37 
            25 
            % 
            %25 
        
        
            123 
            7b 
            { 
            %7b 
        
        
            125 
            7d 
            } 
            %7d 
        
        
            124 
            7c 
            | 
            %7c 
        
        
            92 
            5c 
            \ 
            %5c 
        
        
            94 
            5e 
            ^ 
            %5e 
        
        
            126 
            7e 
            ~ 
            %7e 
        
        
            91 
            5b 
            [ 
            %5b 
        
        
            93 
            5d 
            ] 
            %5d 
        
        
            96 
            60 
            ` 
            %60 
        
    
字符编码
字符编码就是将字节转换为字符的一种方法。要验证或者显示一个 HTML 文档,程序必须选择一个字符编码。HTML5 作者有三种方式设置字符编码:
HTTP Content-Type 头:
如果你在编写 cgi 程序或者类似的程序,那么可以使用 HTTP Content-Type 头设置任意字符编码:
下面是一个简单的例子:
XML/HTML Code复制内容到剪贴板
    - print "Content-Type: text/html; charset=utf-8\r\n";  
<meta> 元素:
可以使用带有 charset 属性的 <meta> 元素指定 HTML5 文档前 512 个字节的编码:
下面是简化的例子:
XML/HTML Code复制内容到剪贴板
    - <meta charset="UTF-8">  
尽管这种语法是被允许的,但上述语法需要使用 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 替换。
Unicode 字节顺序标记(BOM)
一个字节顺序标记(BOM)由数据流开头的 U+FEFF 字符码组成,它可以用作定义字节顺序和编码形式的签名,主要是未标记的明文文件。
许多 Windows 程序(包括 Windows 记事本)都会在保存为 UTF-8 的任意文档开头添加 0xEF, 0xBB, 0xBF。这就是 Unicode 字节顺序标记(BOM)的 UTF-8 编码,通常被称为 UTF-8 BOM,尽管它和字节顺序没有关系。
对于 HTML5 文档,我们可以在文件的开头使用 Unicode 字节顺序标记(BOM)字符。这个字符为使用的编码提供了签名。