网络编程 - URL编码

URL字符串中的字符

参考:RFC2396 RFC1738

URL中使用的字符必须来自ASCII的一个固定的子集,确切地讲,包括:

  • 大写字母A-Z
  • 小写字母a-z
  • 数字0-9
  • 保留字符:具有特殊含义的字符
    ; / ? : @ & = + $ ,
  • 特殊字符
    - _ . ! ~ * ' ( )

既然规定了URL中允许的字符范围,那么范围外的字符出现在URL字符串中的时候就要做编码处理。下面就详细说一下哪些字符需要编码以及原因:

  • ASCII控制字符
    控制字符是无法打印的,也就是说你在URL中根本就不能把它输入显示出来,需通过编码处理。
  • 非ASCII字符
    包含非ASCII字符的URL是无效的,所以需要做编码处理。
  • 保留字符
    上面不是说了保留字符可以出现在URL中吗?这里为什么又要提出来?保留字符是在URL中具有特殊意义的字符,但是如果这些字符在URL中的出现并不是完成它的特殊意义,那么就必须做编码处理,比如说"="有特殊意思,它隔断参数的名和值,但是如果"="本身就是名或者值的一部分的时候,它在URL中的作用就不是一个保留字符了,这时候就需要做编码处理,不然的话把它看作保留字符然后进行URL解析的时候就会出现问题。
  • 不安全字符
    下面是RFC文档中对不安全字符的描述:字符不安全的原因有很多。空格字符就是不安全的,因为URL在被转录或者被排版或者被字处理程序处理后其中重要的空格可能被忽略,而可忽略的空格却有可能被解释了。"<"和">"字符也是不安全的,因为它们被用来作为URL在文本中的分隔符;而在有些系统中用引号"来界定URL。"#"字符也是不安全的,因为它在万维网和其他一些系统中被用来从"片段/锚点"标识符中界定URL,所以它通常都要被编码。字符"%"被用来对其他字符进行编码,它也是不安全的。其他一些字符,如: "{", "}", "|", "", "^", "~", "[", "]", 和 "`",由于网关和其他传输代理有时会对这些字符进行修改,所以它们也是不安全的。

百分号编码(Percent-encoding)

上面说到了要对URL中非有效字符进行编码,那么如何进行编码呢?URL中使用百分号编码的方式进行编码,这个编码的方式为:

“%”后面跟着替换字符的ASCII值的十六进制表示形式。

空格是一种特殊情况,因为它太普遍了。除了编码为%20,空格可以编码为加号(+)。加号本身编码为%2B。

下面列出了一些常见字符的编码值:

字符 编码值
: %3A
/ %2F
? %3F
# %23
[ %5B
] %5D
@ %40
! %21
$ %24
& %26
' %27
( %28
) %29
* %2A
+ %2B
, %2C
; %3B
= %3D
% %25
空格 %20 or +

根据上下文的不同,空字符被翻译成'+'(类似于application/x-www-form-urlencoded消息中使用的百分比编码版本),或者像在Urls中编码成'%20'。

URL编码问题

下面的文章对URL编码问题描述得比较详细,跳转阅读:

http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 职介所是为没工作的人找工作,而猎头是为有工作的人提供更好的工作,把顶尖人才放到最合适的位置上,否则对人和职位都是损...
    HR那些人和事阅读 601评论 0 2
  • 大大的城市 小小的我 小小的时间 慢慢地走 慢慢的脚步 又清醒了几时 在这风中 在这风中 金色的月亮 黑色夜空 黑...
    晟梓阅读 826评论 5 28
  • 其实在以前,如果你问我,你的人生榜样是谁。我一定会拔高榜样的形象和口碑,我以为只有我的榜样看起来很牛逼才能说...
    鱼羊姑娘阅读 1,382评论 3 15
  • Hello,又到了职优易讲课的时间啦!猜猜看,今天职优易会给大家带来怎样的惊喜呢? 这几天,大家都初步了解了字体、...
    职优易阅读 629评论 0 0