UTF-16 是 ASCII 的超集吗?如果是,根据 HTML 标准,为什么 UTF-16 与 ASCII 不兼容?

Is UTF-16 a superset of ASCII? If yes, why is UTF-16 incompatible with ASCII according to the HTML Standard?

根据 Wikipedia article on UTF-16,“...[UTF-16] 也是唯一与 ASCII 不兼容的网络编码。” (在摘要末尾。)此声明指的是 HTML 标准。 这是一个错误的说法吗?

我主要是 C# / .NET 开发人员,.NET 和 .NET Core 在内部使用 UTF-16 来表示字符串。我很确定 UTF-16 是 ASCII 的超集,因为我可以轻松编写显示所有 ASCII 字符的代码:

public static void Main()
{
    for (byte currentAsciiCharacter = 0; currentAsciiCharacter < 128; currentAsciiCharacter++)
    {
        Console.WriteLine($"ASCII character {currentAsciiCharacter}: \"{(char) currentAsciiCharacter}\"");
    }
}

当然,控制字符会弄乱控制台输出,但我想我的陈述很清楚:16位的低7位char取对应的ASCII码点,而高9位为零。因此 UTF-16 应该是 .NET 中 ASCII 的超集。

我试图找出为什么 HTML 标准说 UTF-16 与 ASCII 不兼容,但它看起来像 they simply define it that way:

An ASCII-compatible encoding is any encoding that is not a UTF-16 encoding.

我找不到任何解释为什么 UTF-16 在他们的规范中不兼容。

我的详细问题是:

  1. UTF-16 实际上与 ASCII 兼容吗?还是我错过了什么?
  2. 如果兼容,为什么HTML标准说不兼容?可能是因为字节顺序?

ASCII 是 7 位编码并存储在一个字节中。 UTF-16 使用 2 个字节的块 (ord) ,这使得它立即不兼容。 UTF-8 使用一个字节块,拉丁字母与 ASCII 匹配。 IOW,UTF-8 旨在向后兼容 ASCII 编码。