HTML URL 编码
在 Web 开发中,URL 编码是一个常见的概念,它用于将一些特殊字符转换为 URL 安全的格式。这样做的目的是确保 URL 在传输过程中不被误解或损坏。
URL 简介
URL 是 Uniform Resource Locators 的缩写,中文名统一资源定位符。
URL 可以由字母组成,由网络协议和域名或 IP 地址等多个部分组成,如 "example.com",或互联网协议(IP)地址:192.68.20.50。你可以简单直观地认为 URL 就是一个网页地址,我们通常都是通过 URL 来进入访问某个网站。
工作原理:
- Web 浏览器通过 URL 从 Web 服务器请求页面。
- 当我们点击 HTML 页面中的某个链接时,对应的
<a>
标签指向万维网上的一个地址。 - 一个统一资源定位符(URL)用于定位万维网上的文档。
URL 语法规则
[scheme]://[host|domain][:port]/[path/filename]
下表是对 URL 各个组成部分的解释:
段 | 描述 |
---|---|
scheme | 定义因特网服务的类型,简称协议类型,最常见的类型是 http |
host | 定义域主机(http 的默认主机是 www) |
domain | 定义因特网域名,比如 getiot.tech |
:port | 定义主机上的端口号(http 的默认端口号是 80) |
path | 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中) |
filename | 定义文档/资源的名称 |
常见的 URL Scheme
下表列出了一些常见的 URL 协议类型。
Scheme | 访问 | 描述 |
---|---|---|
http | 超文本传输协议 | 以 http:// 开头的普通网页,不加密 |
https | 安全超文本传输协议 | 安全网页,加密所有信息交换 |
ftp | 文件传输协议 | 用于将文件下载或上传至网站 |
file | 电脑上的文件 | 访问计算机上的文件 |
URL 字符编码
URL 只能使用 ASCII 字符集 来通过因特网进行发送,由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。这个过程就称为“URL 编码”(也叫百分号编码),即将 URL 中的一些字符(例如空格、特殊符号)转换为符合 URL 格式的编码。
URL 编码使用百分号(%
)其后跟随两位的十六进制数来替换非 ASCII 字符。例如:
- 空格(
%20
&
会被编码为%26
这样做是为了避免 URL 中的特殊字符与 URL 中其他部分产生冲突,特别是当你需要传递数据时。
为什么需要 URL 编码?
- 保证 URL 的有效性:某些字符在 URL 中有特殊意义,比如
?
、&
、=
等。如果你想在 URL 中使用这些字符作为数据的一部分,就必须进行编码。 - 支持非 ASCII 字符:URL 编码还可以将非 ASCII 字符(比如中文、日文等)转化为 URL 可接受的格式。例如,中文字符
你好
会被编码为%E4%BD%A0%E5%A5%BD
。 - 避免冲突和错误:URL 编码可以避免字符与 URL 的其他部分冲突,确保数据能够正确传输。