Unicode 字符集中 ASCII 范围之外的术语。

3

有没有一种通用术语来称呼ASCII范围之上(十进制编号大于127)的Unicode字符?

我曾看到这些被称为“扩展ASCII”和“Unicode字符”,但这两者都不太满意。

(“扩展ASCII”没有明确定义,错误地暗示了对ASCII标准的“扩展”,而且历史上只涵盖了255以内的字符,而不是整个Unicode范围。“Unicode”则暗示ASCII字符不属于Unicode,这是不正确的)


4
代码点 U+00000 到 U+0007F 被称为“基本拉丁字母”块。因此,您可以将其他字符称为“非基本拉丁字母”。该块以前被称为“ASCII”,因此您可以说其他字符是“非ASCII”。 - Raymond Chen
1个回答

1

简短版:tl;dr

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

在 Unicode 中,定义的 128 个字符属于遗留编码 US-ASCII,它们被称为 基本拉丁 块。Unicode 是 US-ASCII 的超集。

因此,对于剩下的 144,569 个字符,没有特别的名称。如果你指的是 泰语 字符,那么它们可以在 泰语 块中找到。如果你指的是 切罗基 字符,那么它们可以在 切罗基 块中找到。以此类推。

详情

Unicode定义了144,697个字符,每个字符都分配了一个称为代码点的数字。代码点数字范围从零到一百万以上(1,114,112十进制或10FFFF十六进制),其中大多数是保留或未分配的。
这些字符按逻辑分组成为一个称为的代码点范围。在Unicode中,US-ASCII字符组成了基本拉丁字符块,即前128个代码点,Unicode是US-ASCII的超集。
接下来的128个代码点,U+0080到U+00FF,被称为拉丁-1补充
您将在维基百科上找到数十个块列表。例如,希腊语和科普特语、西里尔字母、阿拉伯语、撒马利亚语、孟加拉语、藏文、箭头盲文方案国际象棋符号等等。如果您感到好奇,可以浏览一下添加到Unicode版本中的块的历史
您问道:

是否有一个公认的术语来指代Unicode字符,这些字符位于ASCII范围以上(超过127个十进制码点)?

我不知道任何官方术语。有些人可能会说“非ASCII”。个人而言,我会说“超出US-ASCII”,其中“超出”指的是高于127个十进制码点的数字范围。
你说:

我曾经看到这些被称为“扩展ASCII”和“Unicode字符”,但两者都不令人满意。

标签{{link1:“扩展ASCII”}}是非官方的、模糊的和无用的。该术语通常指各种预Unicode 8位 字符编码 中位置0到255的位置。有许多“扩展ASCII”编码。因此,当讨论Unicode时,建议避免使用此术语。我认为,在2022年,我们可以将所有这些“扩展ASCII”编码视为遗留

至于“Unicode字符”,Unicode中定义的所有144,697个字符都是“Unicode字符”,包括US-ASCII的128个字符。(再次强调,Unicode是US-ASCII的超集。)因此,将这些144,697个字符的任何子集称为“Unicode字符”是愚蠢和无用的。


作为一个美国人,我必须说我注意到这个问题有偏见。在我看来,许多美国信息技术行业的人持有一种偏见,认为包含基本美式英语字母表的US-ASCII字符是“正常”的,而所有其他字符都是“外国的”或“奇怪的”。这种观点忽略了Unicode被发明的根本原因:将世界上所有的文字脚本放在同等地位上,全部用一个代码点集合来表示,由一个权威组织一起进行文档编制,并使用相同的技术实现。
所以我建议调整你的思考方式。不要试图将Unicode分成ASCII和非ASCII,而是学会按照数十个Unicode块来思考。当处理只使用US-ASCII的旧系统时,请知道Unicode的基本拉丁块对应于它。这个块并不比任何其他块更重要。
几乎所有现代操作系统都支持Unicode,这是令人欣慰的。这种支持意味着支持全部的Unicode,而不是其中的一个子集。关于子集,唯一的限制就是字体。没有一个字体包含了Unicode定义的144,697个字符的每一个字形。因此,大多数字体只关注于许多块中的一些或几个。
对于那些学习这些主题的人,我强烈推荐Joel Spolsky的文章 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。你可能会发现它是一篇令人惊讶的有趣阅读材料。

我同意存在“问题偏见”,但这不仅仅是文化偏见,而是技术上的偏见。虽然“现代操作系统都支持Unicode”是正确的,但软件远不止于操作系统。 “遗留软件”(以及“次优设计”)是生活中的事实。如果我的软件依赖于另一款软件,并且该软件只接受ASCII,则我别无选择,只能防止“非ASCII”字符被发送到该软件。如果我想记录该限制,我需要使用相应的术语。 - JoelFan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接