原文: What is UTF-8? UTF-8 Character Encoding Tutorial

UTF-8 是一个字符编码系统。它可以让你将字符表示为 ASCII 文本,同时还允许使用国际字符,如中文字符。

截至 2020 年代中期,UTF-8 是最流行的编码系统之一。

要开始使用 UTF-8,你首先要熟悉基本的 ASCII 字符集。

什么是 ASCII 字符集

ASCII 使用 7 位代码来表示 128 个不同的字符。这些代码被分为 95 个可打印的字符,其中包括 26 个英文字母(A 到 Z,包括大写和小写)、10 个数字(0 到 9),以及各种标点符号和其他符号。

还有 33 个不可打印的字符,其中包括控制字符,如回车和换行,以及其他各种用于格式化文本的字符。

UTF-8 和 ASCII 有什么区别

UTF-8 扩展了 ASCII 字符集,使用 8 位代码,允许多达 256 个不同的字符。

这意味着 UTF-8 可以表示所有可打印的 ASCII 字符,以及不可打印的字符。

UTF-8 还包括各种额外的国际字符,如中文字符和阿拉伯字符。

如何在你的网页中使用 UTF-8 - HTML UTF-8 实例

现在是最简单的部分。你实际上不需要知道它是如何工作的(尽管我一会儿会告诉你)。你可以在你的 HTML 代码中配置 UTF-8 字符编码,只需在代码的 <head> 部分写上一行 HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
</html>

说完这些,让我解释一下 UTF-8 是如何工作的,以及为什么它是一个出色的编码方案。

UTF-8 编码是如何工作的,以及每个字符使用的存储量是多少

当用 UTF-8 表示字符时,每个代码都由一个或多个字节的序列来表示。使用的字节数取决于该字符所代表的码位。下面是使用范围的细分:

  • 在 ASCII 范围内(0-127)的代码由一个字节表示
  • (128-2047)范围内的码位由两个字节表示
  • (2048-65535)范围内的代码点由三个字节表示
  • (65536-1114111)范围内的代码由四个字节表示。(这似乎是很多可能的字符,但请记住,仅在中文中,就有数 10 万个字符。)

UTF-8 序列的第一个字节被称为 “leader byte”。leader byte 提供了关于序列中有多少个字节的信息,以及字符的码位值是什么。

单字节序列的 leader byte 总是在(0-127)范围内。两字节序列的 leader byte 在(194-223)范围内。三字节序列的 leader byte 在(224-239)范围内。四字节序列的 leader byte 在(240-247)范围内。

序列中剩余的字节被称为 “trailing bytes”。两字节序列的 trailing bytes 的范围是(128-191)。三字节序列的 trailing bytes 的范围是(128-191)。而四字节序列的 trailing bytes 在(128-191)范围内。

你可以通过查看 leader bytes 和 trailing bytes 来计算一个字符的码位值。对于一个单字节的序列,其码位值等于 leader bytes 的值。

对于一个两字节的序列,码位值等于 ((leader byte - 194) * 64) + (trailing byte - 128)。

对于一个三字节的序列,码位值等于 ((leader byte - 224) * 4096) + ((trailing byte1 - 128) * 64) + (trailing byte2 - 128)。

对于一个四字节的序列,码位值等于 ((leader byte - 240) * 262144) + ((trailing byte1 - 128) * 4096) + ((trailing byte2 - 128) * 64) + (trailing byte3 - 128)。

UTF-8 是一个不错的编码选择

UTF-8 是一个超级有效的编码系统。它可以代表广泛的字符,同时仍然与 ASCII 兼容。这使得它成为国际化软件中的一个不错选择。

我希望这篇文章对你有帮助。如果你想学习更多关于编程和技术的知识,可以查看 freeCodeCamp 的核心编程课程。它是免费的。