ASCII范围之外的Unicode字符的术语



是否有一个公认的术语来指代ASCII范围以上(小数点127以上)的Unicode字符?

我见过这些被称为";扩展ASCII";以及";Unicode字符";,两者都不令人满意。

("扩展ASCII"定义不明确,错误地暗示了ASCII标准的"扩展",而且在任何情况下,历史上只指小数点后255位的字符,而不是整个Unicode范围。"Unicode"暗示ASCII字符不是Unicode,这是错误的)

tl;dr

Unicode中的144697个字符被组织成数十个逻辑分组,称为

传统编码US-ASCII中定义的128个字符在Unicode中被称为基本拉丁语块。Unicode是US-ASCII的超集。

因此,144697个字符中的其他144569个字符没有特殊名称。如果您的意思是泰语字符,则这些字符位于泰语块中。如果你指的是切罗基字符,这些字符可以在切罗基块中找到。等等。

详细信息

Unicode定义了144697个字符,每个字符都分配了一个被称为代码点的数字。代码点号的范围从零到超过一百万(1114112十进制或10FFFF十六进制),大多数是保留或未分配的。

这些字符在逻辑上被分组为一系列代码点,称为。US-ASCII字符构成Unicode中的基本拉丁块,即前128个代码点,Unicode是US-ASCII的超集。

接下来的128个代码点,从U+0080到U+00FF,被称为拉丁-1补充

你会发现维基百科上还有几十个区块。例如,希腊语和科普特语、西里尔文、阿拉伯语、撒马利亚文、孟加拉语、藏语、箭头、盲文图案、国际象棋符号等等。如果好奇,可以浏览添加到Unicode版本中的块的历史记录。

你问:

是否有一个公认的术语来指代ASCII范围以上(小数点127以上)的Unicode字符?

据我所知,没有官方术语。有些人可能会说"非ASCII"。就我个人而言,我会说"超越US-ASCII","超越"一词指的是高于127位小数的数字范围。

你说:

我见过这些被称为";扩展ASCII";以及";Unicode字符";,两者都不令人满意。

标签"扩展ASCII"是非官方的、模棱两可的,而且毫无帮助。该术语通常指的是各种Unicode之前的8位字符编码中的小数点0到255的位置。有许多";扩展ASCII";编码。因此,我建议您在讨论Unicode时避免使用此术语。我相信,在2022年,我们可以考虑所有这些";扩展ASCII";将编码作为遗产。

至于"Unicode字符",在Unicode中定义的144697个字符都是"Unicode字符,包括US-ASCII的128个字符。(同样,Unicode是US-ASCII的超集。)因此,将这144697个字符中的任何一个子集称为"Unicode字符"都是愚蠢和无益的。


作为一名美国人,我不得不说,我注意到这个问题中存在偏见。在我看来,信息技术行业的许多美国人都有一种偏见,认为包含基本美国英语字母表的US-ASCII字符是"正常的",而所有其他字符都是"外国的"或"奇怪的"。这种观点忽略了Unicode发明的原因:将世界各地的所有脚本置于平等的地位,所有脚本都在一组代码点分配中进行说明,所有脚本由一个权威组织以相同的方式记录在一起,所有脚本均使用相同的技术实现。

所以我建议你调整一下思路。与其试图将Unicode分成ASCII&非ASCII,学会从几十个Unicode块的角度思考。在处理仅使用US-ASCII的遗留系统时,要知道Unicode的基本拉丁块是对应的。这个区块并不比其他区块重要。

值得庆幸的是,如今大多数现代操作系统都支持Unicode。这种支持意味着Unicode的所有,而不是子集。关于子集,唯一的限制是字体。在Unicode中定义的144697个字符中,没有一种字体包含每一个字符的字形。因此,大多数字体只关注许多块中的几个或几个块。


对于那些了解这些主题的人,我强烈推荐Joel Spolsky的文章每个软件开发人员绝对、积极地必须知道Unicode和字符集(没有借口!)。你可能会发现这是一本令人惊讶的有趣读物。

最新更新