HTML URL 编码
字符集(charset)决定 HTML 文件如何把字节变成字母。URL 编码(百分号编码 / percent-encoding)是另一个问题:字符如何在 URL 内部安全地传递——出现在链接、重定向以及表单查询数据里——而又不破坏 URL 自身的结构。空格、非 ASCII 字母以及保留符号,常常需要写成 % 加上十六进制的形式,好让浏览器与服务器对含义达成一致。
什么是 URL 编码
URL 有一些用来组织地址结构的保留字符:? 开始查询串,& 分隔成对参数,= 把名称接到值,# 开始片段标识。如果这些字符作为 数据 出现在某个值里面,就必须编码,以免被误当成结构本身。空格这类不安全字符也要编码,才能可靠传输。
直接回答
URL 编码会把一个字符替换成 % 加上两位十六进制数字。经典例子:空格变成 %20。许多浏览器和 HTML 表单在提交时会自动编码查询值。当你手写 href 里的查询串、调试一条坏掉的链接,或阅读满是百分号编码的地址栏时,你仍然需要理解这一概念。
常见百分号编码
📊 常见百分号编码
| Character | Encoded | Note |
|---|---|---|
| space | %20 | 在查询串中极为常见 |
| # | %23 | 否则 # 会开始一个片段 |
| & | %26 | & 分隔查询参数对 |
| = | %3D | = 分隔名称与值 |
| ? | %3F | ? 开始查询字符串 |
| / | %2F | 值内部的斜杠可能需要编码 |
链接中的已编码查询
对手写一条带空格的搜索查询,是最清晰的入门演示。把值里的空格编码掉;结构用的 ? 和 = 保持原样。
查询中含已编码空格的链接
html<p>
<a href="search.html?q=html%20links">Search for html links</a>
</p>
阅读示例
search.html是路径;在你能控制文件名时,请保持路径文件名简单?q=开始一个名为q的查询参数html%20links是值「html links」,其中空格被编码为%20- 可见的链接文字可以保持人类可读;编码属于 URL 本身
优先使用干净文件名;编码的是值
把整页文件名里的空格全部编码,对谁都不方便。请优先用 my-page.html,而不是 my page.html。百分号编码主要用在查询值,以及你必须手工拼装的 URL 中的特殊字符上。
干净路径与已编码的查询值
html<!-- Prefer a clean path -->
<a href="my-page.html">My page</a>
<!-- Encode spaces inside query values when needed -->
<a href="results.html?topic=url%20encode">URL encode results</a>
表单与浏览器常常会帮忙
当用户以 method="get" 提交 HTML 表单时,浏览器通常会替你把字段值编码进查询串。这并不能免除你在阅读日志、分享链接或手写 href 时理解 %20 的需要。掌握这一模式,调试会更快。
与 HTML 实体不是一回事
在 HTML 文本里,& 是与号字符的实体。在 URL 里,作为 数据 的与号可以写成 %26。不同的工具,不同的上下文。同样,文件字符集 UTF-8 关乎如何解码 .html 文件——它并不能替代 URL 内部的百分号编码。
URL 中的非 ASCII(初学者提示)
基本 ASCII 之外的字母,在真实地址里可能表现为更长的百分号序列。本课不必去背那些对照表。记住规则即可:当某个字符作为数据时不安全或属于保留字符,百分号编码就是 URL 携带它的方式。学习页面里,在你熟悉之前,演示查询请保持简单拉丁字母加上 %20。
在编辑器中练习
- 创建一条链接,其
href包含类似?q=hello%20world的查询。 - 打开该链接,观察地址栏。
- 在源码里把
%20改成原始空格,重新加载,比较浏览器如何规范化或破坏该 URL。 - 把练习文件改名为使用连字符而不是空格,并相应更新链接。
- 写出一个若与号属于数据就会需要
%26的查询值——然后确认你没有去编码参数之间的结构性&。
容易犯的错误
- 在代码里把原始空格粘进 URL,却不检查结果
- 误把
https://方案或整段结构骨架都做百分号编码 - 把 HTML 实体(
&)与 URL 编码(%26)混为一谈 - 每个文件名都塞空格,指望编码能永远拯救导航
- 编码本该作为 URL 语法留在各部分之间的结构性
?/&/=
小结
- URL 编码使用
%加上两位十六进制数字(空格 →%20) - 保留字符与不安全字符在作为 数据 时需要编码
- 优先使用简单文件名;手写时对查询值做编码
- 表单与浏览器在提交时常常自动编码
- 百分号编码与 HTML 实体或文件字符集不是同一项工作
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部