2014-01-23 61 views
17

正在閱讀關於字符編碼的Joel Spolsky的「The Absolute Minimum」。 我的理解是,ASCII是一種代碼點+編碼方案,在現代,我們使用Unicode作爲代碼點方案,UTF-8作爲編碼方案。它是否正確?ASCII與Uni​​code + UTF-8

回答

16

是的,除了UTF-8是編碼方案。其他編碼方案包括UTF-16(具有兩個不同的字節順序)和UTF-32。 (對於一些混淆,在Microsoft軟件中UTF-16方案被稱爲「Unicode」)。

而且,確切地說,定義ASCII的美國國家標準規定了一組字符及其編碼爲7位量,而不用按字節指定特定的傳輸編碼。過去,它以不同的方式使用,例如因此將五個ASCII字符打包到一個36位存儲單元中,或者使用8位字節將額外字節用於檢查目的(奇偶校驗位)或傳輸控制。但現在使用的是ASCII,因此一個ASCII字符被編碼爲一個8位字節,第一個位設置爲零。這是事實上的標準編碼方案,隱含在大量的規範中,但嚴格來說不是ASCII標準的一部分。

+3

那麼ASCII與UTF-7相同? – aaiezza

19

在現代,ASCII現在是UTF-8的一個子集,而不是它自己的方案。 UTF-8向後兼容ASCII。

+1

好的。在UTF-8之前,ASCII是一個組合的代碼點+編碼系統嗎? 我只問,因爲我想了解ASCII系統是如何演變的。 –

+1

ASCII定義碼點值(它們在Unicode出現之前不稱爲碼點)0-127,但它沒有定義它們的編碼。所有語言編碼的前128個字符都使用與ASCII相同的值。 UTF-8,ISO編碼,拉丁編碼等都是支持ASCII值的8位編碼。 UTF-16和UTF-32是16/32位編碼,也支持ASCII值。給定編碼中的Codepoint值及其編碼的Codeunit值是兩個單獨的事物。 –

+0

類別。 ASCII技術上只定義了前7位。但是大多數ASCII +代碼頁方案具有額外的128個字符,如Windows(1252)或Mac OS Roman(10000)。這些都被稱爲「ASCII」,但如果超過127,UTF-8與它們中的任何一個都不匹配。 – PRMan