我正在重读 Joel Spolsky 的经典博客文章每个软件开发人员必须绝对、积极地了解有关 Unicode 和字符集的最低要求(没有借口!)并注意到了这一段:
最终,这种 OEM 混战被编入ANSI 标准 (重点是我的)。在 ANSI 标准中,每个人都同意 128 以下的字符应该如何处理,这与 ASCII 基本相同,但根据您居住的地方,有很多不同的方式来处理 128 及以上的字符。这些不同的系统被称为代码页。
本文引用的是哪项 ANSI 标准?可以肯定的是,美国国家标准协会已经发布了许多标准(毕竟,这才是他们实际做),但我一直无法弄清楚是哪一个。
我最接近的猜测是,这可能暗示着 ISO-8859,也许这份文件最初是美国标准,后来才被采纳为国际标准;但在标准化“代码页”和“OEM”字符集的背景下,这没有任何意义。
维基百科代码页文章提到了 IBM 标准,并指出 IANA 维护代码页映射注册表,但显然,它们都不是 ANSI。
我的理解是,ANSI 尚未标准化任何现代 8 位字符集,并且此上下文中的“ANSI”通常是指 Microsoft 现已放弃的混淆术语(其中“ANSI”曾经显然用来表示类似当前选择的代码页)。
我是不是忽略了什么标准?还是说 Joel 的博客上只是(惊呼)出现了错误?
答案1
这是一个谜题,让我们把所有已知的事实汇总起来。我们正在寻找:
- ANSI 标准
- 关于字符集
- 指定前 128 个代码点
- 并且是代码页和所有后续字符集标准的基础。
对我来说,结果只有一个—— ASCII 标准我相信这是 ANSI 第一个指定前 128 个代码点的标准,实际上也是最后一个。
尽管 ASCII 后来在细节上有所发展,但它的主要发展始于 1963 年。该标准由国际标准化组织 (ISO) 的美国分支机构 ANSI 制定。由于该标准省略了对非美国字符的引用,而随后试图回答该问题的代码页非常混乱,只能就 ASCII 部分达成一致,因此标准化工作由国际 ISO 组织本身承担。
从历史上看, ISO/IEC 8859 标准 在 ASCII 和代码页之间出现,但这不是 ANSI 标准,而是由 ISO 进行详细说明。
“ANSI 代码页”一词用词不当 Windows 代码页这些代码页是由 Microsoft 而不是 ANSI 创建的。其中一个变体是 Windows-1252,后来被称为 ISO/IEC 8859-1。
字符集的实际历史相当复杂,需要进行大量的侦查工作才能确定时间表、交叉影响以及由此产生的事实上的标准或定义。但这一切都始于 ASCII,它为所有未来的演变奠定了基础,最终形成了 Unicode 和 UTF-8。
答案2
答案3
如果没有乔尔的意见,我们无法确定,但根据这里的其他答案尝试和我认为的缺陷,让我提出一个我认为明显而简单的推测:
这里没有实际的 ANSI 标准,Joel 只是敷衍了事。
这里究竟总结了什么,可能混淆了什么,目前还不能确定,但我猜他谈论的是 Windows 代码页的开发,微软一度将其称为“ANSI 代码页”,尽管它与美国国家标准协会没有任何实质性的联系,可能除了最终未能成功的将 Windows 代码页 1252 标准化为“扩展 ASCII”的努力之外,该努力包含一些西欧语言的各种重音字符以及可用于排版和简单数学表达式的符号。据一些消息来源称,这最终导致了ISO/IEC 8859-1最终ISO 8859不同地区的 8 位字符集标准(另请参阅ECMA-94)。
为了记录,ASA 然后ANSI 委员会 X3负责 ASCII 标准(ASA X3.4,然后是 ANSI X3.4,然后是 ISO 646)以及显示终端的 ASCII 屏幕控制序列的 X3.64 标准。该委员会在 20 世纪 80 年代末的著名出版物包括 C 语言提案和所谓的“扩展 Pascal”以及 SCSI 硬件接口,但我找不到与该时期的字符集相关的任何内容。
答案4
https://en.wikipedia.org/wiki/ASCII#History
根据此列表,第一个定义 ASCII 的 ANSI 标准是 ANSI X3.4-1977。