首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UTF-16是ASCII的超集吗?如果是,为什么根据HTML标准UTF-16与ASCII不兼容?

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

Stack Overflow用户
提问于 2020-05-17 07:05:46
回答 1查看 2K关注 0票数 4

根据维基百科关于UTF-16的文章的说法,“.UTF-16也是唯一与ASCII不兼容的网络编码.”(摘要末尾。)此语句引用HTML标准。这是一个错误的陈述吗?

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

代码语言:javascript
运行
复制
public static void Main()
{
    for (byte currentAsciiCharacter = 0; currentAsciiCharacter < 128; currentAsciiCharacter++)
    {
        Console.WriteLine($"ASCII character {currentAsciiCharacter}: \"{(char) currentAsciiCharacter}\"");
    }
}

当然,控制字符会破坏控制台的输出,但我认为我的说法很清楚: 16位char的下7位采用相应的ASCII代码点,而上9位为零。因此,UTF-16应该是.NET中ASCII的超集.

我试图找出为什么HTML说UTF-16与ASCII不兼容,但它看起来像是他们只是这样定义它

与ASCII兼容的编码是任何不是UTF-16编码的编码.

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

我的详细问题是:

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-17 07:14:05

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61848142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档