1. 什么是 url
url 访问网页时需要输入的网页地址,表示资源的地点。这个就类似于我们在电脑中使用的文件路径一样可以定位到具体的某个资源,这个资源就是文件。
2. url 编码
一般 URL只能使用英文字母,阿拉伯数字和某些标点符号,不能使用其他文字和符号。比如有英文字母的网址
http://www.abc.com
,但是没有希腊字母的网址http://www.aβγ.com
(读作阿尔法-贝塔-伽玛.com)。这是因为网络标准RFC 1738 做了硬性规定,规定如下。
"...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL."
翻译如下:
"只有字母和数字[0-9a-zA-Z],一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。"
所以如果网址中使用了中文或其他非英文的字母,那么需要对非英文字母编码后再使用。看下面的测试,在一个浏览器的地址栏中输入含有中文的 url 比如
https://www.baidu.com/你好
点击加载,然后在浏览器开发者工具中查看 HTTP 消息头发现我们的链接变成了GET https://www.baidu.com/%E4%BD%A0%E5%A5%BD
说明浏览器将你好
编码成了%E4%BD%A0%E5%A5%BD
。你
和好
的 utf-8 编码分别是E4 BD A0
和E5 A5 BD
,因此,%E4%BD%A0%E5%A5%BD
是按照顺序,在每个字节前加上%
而得到的,具体如下图:
3. 具体网页说明
图中具体的链接为
https://zhidao.baidu.com/question/715409289869912285.html?qbl=relate_question_0&word=%E4%AF%C0%C0%C6%F7%B5%D8%D6%B7%C0%B8%B3%F6%CF%D6%20index.php%3Fid%3D%3F
因为这个网页存在中文的路径,比如这是一个问答网页,那么别人编写的问题是使用中文描述的,需要对这些中文使用 utf-8 进行编码,所以这个网页的链接看起来非常的长且复杂。所以才会有有些 url 很简单很简短,有些 url 很长很复杂。