HTML - URL编码

你好,未来的网页开发者们!今天,我们将要深入探索URL编码的迷人世界。如果你对这个话题感到陌生,不用担心;我们会从基础开始,逐步深入。在本教程结束时,你将能够像专业人士一样进行URL编码!

HTML - URL Encoding

什么是URL编码?

在举例之前,让我们先了解一下URL编码是什么,以及它为什么很重要。

URL编码是一种将字符转换为可以在互联网上传输的格式的方法。这就像是给你的文本发放一个特殊的护照,让它在网络世界中安全旅行!

想象一下:假设你试图发送一个包含符号和空格的时髦地址的信件。邮政服务可能会感到困惑!URL编码就像是将那个地址重新写成每个邮递员(或者在我们的例子中,每个网页服务器)都能理解的方式。

示例

让我们从一个简单的例子开始:

https://www.example.com/my file.html

这个URL中包含了一个空格,这可能会导致问题。当我们进行编码时,它变成了:

https://www.example.com/my%20file.html

看到那个%20了吗?那就是空格的URL编码版本。酷吧?

ASCII控制字符编码

现在,让我们来谈谈ASCII控制字符。这些是控制文本处理方式的特殊字符。在URL编码中,我们需要对这些字符特别小心。

下面是一些常见的ASCII控制字符及其编码版本:

字符 编码
NUL %00
SOH %01
STX %02
ETX %03

例如,如果你需要在URL中包含一个NUL字符(尽管这很罕见),你会使用%00

非ASCII控制字符编码

非ASCII字符是指标准ASCII集合之外的字符,比如带重音的字母或其他字母表中的符号。这些也需要特殊处理。

让我们看一个例子:

https://www.example.com/café

编码后,这变成了:

https://www.example.com/caf%C3%A9

é被替换成了%C3%A9。这确保了世界各地的服务器都能正确解释这个字符。

保留字符编码

有些字符在URL中有特殊含义。我们称这些字符为保留字符,如果我们想将它们用作普通字符,就需要进行编码。

下面是保留字符及其编码版本:

字符 编码
! %21
# %23
$ %24
& %26
' %27
( %28
) %29
* %2A
+ %2B
, %2C

让我们看一个例子:

https://www.example.com/search?q=fish&chips

这个URL使用了&作为参数之间的分隔符。如果我们实际上想要搜索"fish & chips",我们需要这样编码:

https://www.example.com/search?q=fish%26chips

现在服务器知道我们在寻找的是"fish & chips",而不是两个独立的搜索词!

不安全字符编码

最后,让我们来谈谈不安全字符。这些字符可能会被各种系统误解,因此应该总是进行编码。

下面是一些不安全字符:

字符 编码
空格 %20
" %22
< %3C
> %3E
# %23
% %25
{ %7B
} %7D
\ %5C
^ %5E
~ %7E

让我们在例子中使用这些:

https://www.example.com/search?q=C++ Programming

正确编码后,这变成了:

https://www.example.com/search?q=C%2B%2B%20Programming

我们编码了+符号和空格,以确保它们被正确解释。

一切结合在一起

现在我们已经涵盖了所有这些类型的编码,让我们尝试一个更复杂的例子:

https://www.example.com/search?q=Where's the café? (It's urgent!)

完全编码后,这变成了:

https://www.example.com/search?q=Where%27s%20the%20caf%C3%A9%3F%20%28It%27s%20urgent%21%29

哇,看起来很不一样!但现在它可以安全地在互联网上传输,而不会有任何误解的风险。

结论

就这样,伙计们!你已经迈出了进入URL编码世界的第一步。记住,尽管一开始可能看起来很复杂,但这一切都是为了确保无论URL走到哪里,都能被正确解释。

将URL编码视为互联网的通用翻译器。它帮助你的URL与世界各地的服务器清晰通信,无论它们包含哪些特殊字符或空格。

在你继续网页开发的旅程中,你会发现理解URL编码非常有用。它将帮助你创建健壮的链接,安全地处理用户输入,甚至调试棘手的URL相关问题。

继续练习,很快URL编码就会成为你的第二天性。快乐编码,愿你的所有URL都能安全地穿越网络!

Credits: Image by storyset