ASCII vs Unicode+;UTF-8

ASCII vs Unicode+;UTF-8,unicode,utf-8,character-encoding,ascii,Unicode,Utf 8,Character Encoding,Ascii,我在看书。 据我所知,ASCII是一种码点+编码方案,在现代,我们使用Unicode作为码点方案,UTF-8作为编码方案。这是正确的吗?在现代,ASCII现在是UTF-8的一个子集,而不是它自己的方案。UTF-8向后兼容ASCII。是,但UTF-8是一种编码方案。其他编码方案包括UTF-16(具有两个不同的字节顺序)和UTF-32。(为了避免混淆,UTF-16方案在Microsoft软件中称为“Unicode”。) 确切地说,定义ASCII的美国国家标准将字符集合及其编码指定为7位量,而没有指定

我在看书。
据我所知,ASCII是一种码点+编码方案,在现代,我们使用Unicode作为码点方案,UTF-8作为编码方案。这是正确的吗?

在现代,ASCII现在是UTF-8的一个子集,而不是它自己的方案。UTF-8向后兼容ASCII。

是,但UTF-8是一种编码方案。其他编码方案包括UTF-16(具有两个不同的字节顺序)和UTF-32。(为了避免混淆,UTF-16方案在Microsoft软件中称为“Unicode”。)


确切地说,定义ASCII的美国国家标准将字符集合及其编码指定为7位量,而没有指定以字节为单位的特定传输编码。在过去,它以不同的方式使用,例如,将五个ASCII字符打包到一个36位存储单元中,或者8位字节将额外字节用于检查目的(奇偶校验位)或传输控制。但现在使用的是ASCII,因此一个ASCII字符编码为一个8位字节,第一位设置为零。这是事实上的标准编码方案,包含在大量规范中,但严格来说不是ASCII标准的一部分。

Ok。在UTF-8之前,ASCII是一种组合码点+编码系统吗?我之所以问这个问题,是因为我想了解ASCII系统是如何演变的。ASCII定义了0-127的码点值(在Unicode出现之前,它们都不被称为码点),但它没有定义它们的编码。所有语言编码的前128个字符使用与ASCII相同的值。UTF-8、ISO编码、拉丁编码等都是支持ASCII值的8位编码。UTF-16和UTF-32是16/32位编码,也支持ASCII值。给定编码中的代码点值和编码的代码单位值是两个不同的东西。ASCII技术上只定义前7位。但大多数ASCII+代码页方案都有额外的128个字符,例如Windows(1252)或Mac OS Roman(10000)。这些代码都被称为“ASCII”,但如果你超过127,UTF-8与其中任何一个都不匹配。@PRMan这些代码通常被称为ANSI编码(即使它们实际上不是由ANSI定义的),而不是ASCII。大多数开发人员都知道ASCII码只有7位,所以只有0-127、128-255个字符由ANSI处理,除此之外由Unicode处理。它被称为Atari 8位计算机的“非标准ASCII”。术语“ANSI编码”在本文中不存在。但它被称为ASCII码,尽管本文主要讨论的是它们之间的差异。ascii-table.com上也一样,其中未提及ANSI,但底部的搜索词除外。事实上,ascii-table.com说ANSI是“一个在Windows社区持续存在的误称”,所以ascii和UTF-7是一样的?原因是当MS引入Unicode支持时,UTF-8不存在,UCS-2是唯一的编码。因此,当Unicode 2.0发布时,他们唯一的办法就是转向UTF-16Historical+技术概述(修复了我的困惑):