HTML 字符集

前言

  • 要正确显示一个 HTML 页面,浏览器必须知道要使用的字符集(字符编码)。

1、字符集

  • HTML5 中默认的字符编码是 UTF-8。

  • 这并非总是如此。早期网络的字符编码是 ASCII 码。

  • 后来,从 HTML 2.0 到 HTML 4.01,ISO-8859-1 被认定为标准。

  • 随着 XML 和 HTML5 的出现,UTF-8 也终于到来了,解决了大量的字符编码问题。

1.1 ASCII 字符集

  • ASCII 是互联网上计算机之间使用的第一个字符集(编码标准),它是在 60 年代早期作为计算机和电子设备的标准字符集被设计的。

  • 计算机信息(数字、文字、图片)在电子中是以二进制 1 和 0(01000101)进行存储的。为了规范字母数字字符的存储,创建了 ASCII(全称 American Standard Code for Information Interchange),即美国信息交换标准编码。

  • ASCII 是一种 7 位字符集,它为每个存储字符定义了一个独特的二元 7 位数字,支持 0-9 数字,大/小写英文字母(a-z、A-Z)和一些特殊的字符,比如 ! $ + - ( ) @ < > 。

    • 由于 ASCII 使用一个字节(7 位表示字符,1 位表示传输奇偶控制),所以它只能表示 128 个不同的字符。这些字符中有 32 个被保留作为其他控制目的使用。
    • ASCII 的最大的缺点是,它排除了非英文字母。
字符集 范围 🔗
ASCII 可打印的字符 32-126 🔗
ASCII 设备控制字符 00-31,127 🔗
ASCII 与 16 进制转换对照表 🔗
  • ASCII 今天仍然在广泛使用,尤其是在大型计算机系统中。

    • 在现代计算机中、HTML 中、互联网上所使用的字符集,都是基于 ASCII。
    • ISO-8859-1(在 HTML 4.01 中是默认的)和 UTF-8(在 HTML5 中是默认的)都是基于 ASCII 建立的。

1.2 ANSI 字符集

  • ANSI(也称为 Windows-1252),是 Windows 95 及其之前的 Windows 系统中默认的字符集。

  • ANSI 是 ASCII 的扩展,它加入了国际字符。它使用一个完整的字节(8 位)来表示 256 个不同字符。

    • ANSI 的第一部分(实体编号 0-127)是原来的 ASCII 字符集。它包含数字、大小写英文字母和一些特殊字符。
    • ANSI 的第二部分(00-31,加上 127)最初被设计用来控制诸如打印机和磁带驱动器之类的硬件设备。
    • 在 ANSI 中,从 128 到 159 的字符用于一些有用的字符,比如欧元符号。
字符集 范围 🔗
ASCII 可打印的字符 32-126 🔗
ANSI 可打印的字符 32-255 🔗
ANSI 设备控制字符 00-31,127 🔗
  • ANSI 和 ISO-8859-1 非常相似,唯一的不同是在 32 个字符上。

    • 在 ISO-8859-1 中,这些字符映射为在 HTML 中不起作用的控制字符。
    • 许多 Web 开发者声明 ISO-8859-1,并使用这 32 个值,就像它们使用的是 Windows-1252。
    • 由于这种常见的误解,当 ISO-8859-1 被声明时,浏览器将更改为 Windows-1252。这对 HTML4、HTML5 和 XHTML 文档类型都适用。
  • 自从 ANSI 成为 Windows 中默认的字符集,所有的浏览器都支持 ANSI。

1.3 ISO-8859 字符集

  • 在 HTML 4.01 中,ISO-8859-1 是默认的字符。

  • ISO(全称 International Standards Organization)为不同的字母/语言定义了标准的字符集。

  • ISO-8859-1 是 ASCII 的扩展,它加入了国际字符。与 ANSI 一样,它使用一个完整的字节(8 位)来表示 256 个不同字符。

    • ISO-8859-1 的第一部分(实体编号 0-127)是原来的 ASCII 字符集。它包含数字、大小写英文字母和一些特殊字符。
    • ISO-8859-1 的第二部分(编码 160-191)包含了常用的特殊字符。
    • ISO-8859-1 的最后一部分(编码 192-255,除了 215 和 247)包含了西欧国家使用的字符。
    • 在 ISO-8859-1 中,未使用从 128 到 159 的编码,但是很多浏览器会显示 ANSI(Windows-1252)字符集的字符,而不是什么都不显示。
字符集 范围 🔗
ASCII 可打印的字符 32-126 🔗
ASCII 设备控制字符 00-31,127 🔗
ISO-8859-1 的第二部分 160-191 🔗
ISO-8859-1 的最后一部分 192-255,除了 215 和 247 🔗
ISO-8859 的变体 🔗
  • 当浏览器在网页中检测到 ISO-8859-1 时,通常默认为 ANSI,因为除了 ANSI 有 32 个额外的字符这一点,其他方面 ANSI 基本等同于 ISO-8859-1。

  • 如果 HTML 4 网页使用了不同于 ISO-8859-1 的字符集,则需要在 <meta> 标签中指定,如下所示:

    1
    <meta content="text/html; charset=ISO-8859-8">

1.4 Unicode 字符集

  • 由于以上所列的字符集是有限的,在多语言环境中是不兼容的,所以 Unicode 联盟(Unicode Consortium)开发了 Unicode 标准(Unicode Standard)。

    • 目标是使用标准的 Unicode 转换格式(即 UTF,全称 Unicode Transformation Format)取代现有的字符集。
    • Unicode 标准覆盖了(几乎)所有的字符、标点符号和符号,在 HTML、XML、Java、JavaScript、E-mail、ASP、PHP 中都得到实现。
    • Unicode 标准得到许多操作系统和所有现代浏览器的支持。
    • Unicode 使文本的处理、存储和运输,独立于平台和语言。

    • Unicode 的前 128 个字符(与 ASCII 一一对应)使用一个与 ASCII 二进制值相同的八位组进行编码,使有效的 ASCII 文本在进行 UTF-8 编码时也是有效的。

字符集 十进制范围 十六进制范围 🔗
ASCII 可打印的字符 32-126 🔗
ASCII 设备控制字符 00-31,127 🔗
UTF-8 C0 控制与基本的 Latin(拉丁字母) 0-127 0000-007F 🔗
UTF-8 C1 控制与 Latin1 补充 128-255 0080-00FF 🔗
UTF-8 Latin(拉丁字母)扩展 A 256-383 0100-017F 🔗
UTF-8 Latin(拉丁字母)扩展 B 384-591 0180-024F 🔗
UTF-8 变音符号 768-879 0300-036F 🔗
UTF-8 Greek(希腊字母)与 Coptic(科普特字母) 880-1023 0370-03FF 🔗
UTF-8 Cyrillic(西里尔字母) 1024-1279 0400-04FF 🔗
UTF-8 Cyrillic(西里尔字母) 补充 1280-1327 0500-052F 🔗
  • Unicode 联盟与领先的标准开发组织合作,这些组织有 ISO、W3C 和 ECMA。

  • Unicode 可以由不同的字符集实现。最常用的编码是 UTF-8 和 UTF-16:

字符集 描述
UTF-8 UTF8 中的字符可以是 1 到 4 字节长。UTF-8 可以代表 Unicode 标准中的任何字符。UTF-8 向后兼容 ASCII。UTF-8 是电子邮件和网页的首选编码。
UTF-16 16 位 Unicode 转换格式是一种可变长度的 Unicode 字符编码,能够编码整个 Unicode 指令表。UTF-16 主要用于操作系统和环境,如 Microsoft Windows、Java 和 .NET。
  • 如果 HTML5 网页使用不同于 UTF-8 的字符,则需要在 <meta> 标签中指定,如下:

    1
    <meta charset="ISO-8859-1">
  • HTML5 中默认的字符编码是 UTF-8。

  • 所有的 HTML 4 处理器都支持 UTF-8,所有的 HTML5 和 XML 处理器都支持 UTF-8 和 UTF-16。

2、字符实体

  • 在 HTML 中,某些字符是预留的,如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities),一些在键盘上找不到的字符也可以使用字符实体来替换。

    1
    2
    3
    &entity_name;

    &#entity_number;
  • 使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。如果字符没有 HTML 实体,可以使用十进制或十六进制引用。

    1
    2
    3
    4
    5
    &nbsp;

    &#160;

    &#xA0;
  • 虽然 html 不区分大小写,但字符实体对大小写敏感

字符集 🔗 字符集 🔗 字符集 🔗
HTML 4 实体名称 🔗
HTML5 实体 I 🔗
HTML5 实体 R 🔗
HTML5 实体 A 🔗
HTML5 实体 J 🔗
HTML5 实体 S 🔗
HTML5 实体 B 🔗
HTML5 实体 K 🔗
HTML5 实体 T 🔗
HTML5 实体 C 🔗
HTML5 实体 L 🔗
HTML5 实体 U 🔗
HTML5 实体 D 🔗
HTML5 实体 M 🔗
HTML5 实体 V 🔗
HTML5 实体 E 🔗
HTML5 实体 N 🔗
HTML5 实体 W 🔗
HTML5 实体 F 🔗
HTML5 实体 O 🔗
HTML5 实体 X 🔗
HTML5 实体 G 🔗
HTML5 实体 P 🔗
HTML5 实体 Y 🔗
HTML5 实体 H 🔗
HTML5 实体 Q 🔗
HTML5 实体 Z 🔗

2.1 不间断空格

字符 实体 十进制 十六进制 描述
&nbsp; &#160; &#xA0; 不间断空格
  • HTML 中的常用字符实体是不间断空格(&nbsp;)。

  • 浏览器总是会截短 HTML 页面中的空格,如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个,如需在页面中增加空格的数量,需要使用 &nbsp; 字符实体。

2.2 结合音标符

  • 发音符号是加到字母上的一个 “glyph (字形)”。

  • 一些变音符号, 如 尖音符 ( ̀) 和 抑音符 ( ́) 。

  • 变音符号可以出现字母的上面和下面,或者字母里面,或者两个字母间。

  • 变音符号可以与字母、数字字符的组合来使用。

音标符 字符 Construct 输出结果
̀ a a&#768;
́ a a&#769;
̂ a a&#770;
̃ a a&#771;
̀ O O&#768;
́ O O&#769;
̂ O O&#770;
̃ O O&#771;

2.3 常用的一些字符实体

字符 实体 十进制 十六进制 描述
&nbsp; &#160; &#xA0; 不间断空格
< &lt; &#60; &#x3C; 小于号
> &gt; &#62; &#x3E; 大于号
& &amp; &#38; &#x26; 和号
&quot; &#34; &#x22 引号
&apos;(IE不支持) &#39; &#x27 撇号
&cent; &#162; &#xA2;
£ &pound; &#163; &#xA3;
¥ &yen; &#165; &#xA5; 人民币/日元
&euro; &#8364; &#x20AC; 欧元
§ &sect; &#167; &#xA7; 小节
© &copy; &#169; &#xA9; 版权
® &reg; &#174; &#xAE; 注册商标
&trade; &#8482; &#x2122; 商标
× &times; &#215; &#xD7; 乘号
÷ &divide; &#247; &#xF7; 除号

3、符号

  • HTML 符号是不呈现在标准的键盘上,比如数学运算符、箭头符号、技术符号和形状。

  • 如需向 HTML 页面添加这些符号,可以使用 HTML 实体名称。如果不存在实体名称,可以使用实体编号。如果字符没有实体名称,可以使用十进制(或十六进制)引用。

  • 提醒:如果使用的是一个 HTML 实体名称或一个十六进制编号,字符总是能正确显示。这是与页面使用的字符集相互独立的。

  • 实体名称对大小写敏感

符号 十进制范围 十六进制范围 🔗
UTF-8 常用标点符号 8192-8303 2000-206F 🔗
UTF-8 货币符号 8352-8399 20A0-20CF 🔗
UTF-8 字母式符号 8448-8527 2100-214F 🔗
UTF-8 箭头 8592-8703 2190-21FF 🔗
UTF-8 数学运算符 8704-8959 2200-22FF 🔗
UTF-8 制表符 9472-9599 2500-257F 🔗
UTF-8 方块元素 9600-9631 2580-259F 🔗
UTF-8 几何图形 9632-9727 258A0-25FF 🔗
UTF-8 杂项符号 9728-9983 2600-26FF 🔗
UTF-8 印刷符号 9984-10175 2700-27BF 🔗
文章目录
  1. 1. 前言
  2. 2. 1、字符集
    1. 2.1. 1.1 ASCII 字符集
    2. 2.2. 1.2 ANSI 字符集
    3. 2.3. 1.3 ISO-8859 字符集
    4. 2.4. 1.4 Unicode 字符集
  3. 3. 2、字符实体
    1. 3.1. 2.1 不间断空格
    2. 3.2. 2.2 结合音标符
    3. 3.3. 2.3 常用的一些字符实体
  4. 4. 3、符号
隐藏目录