Joel 指的是哪一個 ANSI 標準?

Joel 指的是哪一個 ANSI 標準?

我正在重讀 Joel Spolsky 的經典部落格文章每個軟體開發人員絕對必須了解 Unicode 和字元集的絕對最低要求(沒有任何藉口!)並注意到這段話:

最終,這個免費的 OEM 被編入了ANSI標準 (強調我的)。在 ANSI 標準中,每個人都同意在 128 以下做什麼,這與 ASCII 幾乎相同,但是有很多不同的方法來處理 128 及以上的字符,具體取決於您居住的地方。這些不同的系統被稱為代碼頁。

本文指的是哪一個 ANSI 標準?可以肯定的是,美國國家標準協會已經發布了許多標準(畢竟,這就是他們實際上的標準)做),但我一直無法弄清楚是哪一個。

我對這可能暗示的最接近的猜測是,這實際上談論的是 ISO-8859,也許該文件最初是作為美國標準,然後被採用為國際標準;但這在標準化「代碼頁」和「OEM」字元集的上下文中沒有意義。

維基百科的代碼頁文章提到 IBM 標準,並指出 IANA 維護代碼頁映射註冊表,但顯然,它們都不是 ANSI。

我的理解是,ANSI 尚未標準化任何現代8 位元字元集,並且在此上下文中的“ANSI”通常指的是Microsoft 現已放棄的混淆術語(其中“ANSI”一度顯然用於表示類似當前的術語) 。

是否存在我忽略的標準?或者只是(喘氣)喬爾的博客上有一個錯誤?

答案1

這是一個謎題,所以讓我們總結所有已知的事實。我們正在尋找:

  • ANSI 標準
  • 關於字符集
  • 其中指定了前 128 個代碼點
  • 它是代碼頁和所有後續字元集標準的基礎。

對我來說結果只有一個—— ASCII 標準。我相信這是 ANSI 指定前 128 個代碼點的第一個標準,實際上也是最後一個。

ASCII雖然後來有細節的演變,但它的主要發展是從1963年開始的。因為該標準省略了對非美國字符的引用,並且隨後並試圖回答該問題的代碼頁確實是一團混亂,只能就 ASCII 部分達成一致,因此標準化工作由ISO本身的國際組織。

從歷史上看, ISO/IEC 8859 標準 到達 ASCII 和代碼頁之間,但這不是 ANSI 標準,而是由 ISO 制定的。

「ANSI 碼頁」是誤稱 Windows 程式碼頁它們是由 Microsoft 創建的,而不是由 ANSI 創建的。一種變體是代碼頁 Windows-1252,後來被稱為 ISO/IEC 8859-1

字符集的實際歷史相當複雜,需要進行大量的偵探工作來建立時間表、交叉影響以及由此產生的事實上的標準或定義。但這一切都是由 ASCII 開始的,它為最終形成 Unicode 和 UTF-8 的所有未來演變奠定了基礎。

答案2

根據他們的維基百科頁面C0 和 C1 控製字元在 ANSI x3.4 中定義。

其中包括用於擴展文字格式的轉義序列,這些序列用於ISO 2022ISO 8859允許多位元組國際字元集。

例如 ESC $ @ 和 ESC $ B 切換到不同的日語 2 位元組編碼,而 ESC ( B 切換回 US-ASCII。這些可能是 ISO(或 ECMA)標準,但它們使用 ANSI 控制代碼,因此這可能是部分用詞不當。

答案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。

相關內容