根据维基百科关于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位char
的下7位采用相应的ASCII代码点,而上9位为零。因此,UTF-16应该是.NET中ASCII的超集.
我试图找出为什么HTML说UTF-16与ASCII不兼容,但它看起来像是他们只是这样定义它。
与ASCII兼容的编码是任何不是UTF-16编码的编码.
我找不到任何解释,为什么UTF-16不兼容他们的规格。
我的详细问题是:
发布于 2020-05-17 07:14:05
ASCII是7位编码,存储在一个字节中。UTF-16使用两个字节块(ord),这使得它立即不兼容。UTF-8使用一个字节块,用于与ASCII匹配的拉丁字母。IOW,UTF-8被设计为向后兼容ASCII编码.
https://stackoverflow.com/questions/61848142
复制相似问题