为什么要对url进行encode

 我来答
匿名用户
2016-08-05
展开全部
这个问题涉及到URL的定义。我们知道URL是为了 统一的命名网络中的一个资源(URL不是单单为了HTTP协议而定义的,而是网络上的所有的协议都可以使用)。

所以这就要求URL有一些基本的特性:

1、URL是可移植的。(所有的网络协议都可以使用URL)
2、URL的完整性。(不能丢失数据,比如URL中包含二进制数据时,如何处理)
3、URL的可阅读性。(希望人能阅读)
因为一些历史的原因URL设计者使用US-ASCII字符集表示URL。(原因比如ASCII比较简单;所有的系统都支持ASCII)

为了满足URL的以上特性,设计者就将转义序列移植了进去,来实现通过ASCII字符集的有限子集对任意字符或数据进行编码。

以下是RFC3986中对转义部分的一些定义:

Reserved characters are those characters that sometimes have special meaning。
Unreserved characters have no such meanings。
就是说在RFC3986中Unreserved characters部分的字符是不需要转义的其他都需要。

PS:不同的编程语言对于URL的转义还不一样。比如Java中的URLEncoder是按照RFC2398转义,PHP5中的rawurlencode是按照RFC3986转义。

作者:秋水
来源:知乎
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式