URL编码规则
ASCII编码
ASCII码实现的是大小写英文字母,阿拉伯数字,及常用的标点符、运算符、控制字符(换行、删除等)和通信字符(文头、确认等)与计算机编码之间的对应。ASCII编码采用单字节(8 Bit)存储,实际数据存储空间是7 Bit,最高位的1 Bit是奇偶校验位。
ASCII编码对于英语国家足够用了,但是却无法表达非英语国家字符到计算机编码之间的映射,如中文汉字、法语字母等。所以,出现了很多非ASCII编码(但大多数都是兼容ASCII码的)。
Latin1编码
Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。Latin1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
ASCII编码是一个7位的容器,ISO-8859-1编码是一个8位的容器。
因为Latin1编码范围使用了单字节内的所有空间,在支持Latin1编码的系统中传输和存储其他任何编码的字节流都不会被抛弃。换言之,把其他任何编码的字节流当作Latin1编码看待都没有问题。这是个很重要的特性,MySQL数据库默认编码是Latin1就是利用了这个特性。
URL只能包含以下几类字符
其他的字符再传输过程中是不允许出现的
| 字符类型 | 示例 |
|---|---|
| 英文字母 | A-Z、a-z |
| 数字 | 0-9 |
| 安全字符 | -_.!*() |
url中一些有语意但是也需要被转义的字符
这些字符在URL中有特定的意义,如果在其他上下文中使用,则需要编码,例如:
:(%3A)协议字符 http:///(%2F)分割字符 http://?(%3F)参数字符#(%23)锚点字符[(%5B) 数组参数标记](%5D)数组参数标记&(%26) 参数连接字符=(%3D)参数和值分割字符%(%25) 转义字符(如果真需要这个符号那么也需要转义)
别的字符怎么表示?
一个字节用2个16进制数表示,比如空格用10进制表示的编码是 32,用16进制表示就是20,%20前面的%是url转义标志。
如果一个汉字用怎么表示?如果是UTF-8(urlencoding使用什么彪马方式取决于网页的编码方式),会用三个字节表示一个汉字,比如中会被转义成%e4%b8%ad
URL编码前和编码后效果展示

能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2018-07-07 21:43 zhangyukun 阅读(11377) 评论(0) 收藏 举报
浙公网安备 33010602011771号