歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux文化

什麼是UCS和ISO10646?


這篇文章說明了在 POSIX 系統 (Linux,Unix) 上使用 Unicode/UTF-8 所需要的信息. 在將來不遠的幾年裡, Unicode 已經很接近於取代 ASCII 與 Latin-1 編碼的位置了. 它不僅允許你處理處理事實上存在於地球上的任何語言文字, 而且提供了一個全面的數學與技術符號集, 因此可以簡化科學信息交換.

UTF-8 編碼提供了一種簡便而向後兼容的方法, 使得那種完全圍繞 ASCII 設計的操作系統, 比如 Unix, 也可以使用 Unicode. UTF-8 就是 Unix, Linux 已經類似的系統使用 Unicode 的方式. 現在是你了解它的時候了.

什麼是 UCS 和 ISO 10646?

國際標准 ISO 10646 定義了 通用字符集 (Universal Character Set, UCS). UCS 是所有其他字符集標准的一個超集. 它保證與其他字符集是雙向兼容的. 就是說, 如果你將任何文本字符串翻譯到 UCS格式, 然後再翻譯回原編碼, 你不會丟失任何信息.

UCS 包含了用於表達所有已知語言的字符. 不僅包括拉丁語,希臘語, 斯拉夫語,希伯來語,阿拉伯語,亞美尼亞語和喬治亞語的描述, 還包括中文, 日文和韓文這樣的象形文字, 以及 平假名, 片假名, 孟加拉語, 旁遮普語果魯穆奇字符(Gurmukhi), 泰米爾語, 印.埃納德語(Kannada), Malayalam, 泰國語, 老撾語, 漢語拼音(Bopomofo), Hangul, Devangari, Gujarati, Oriya, Telugu 以及其他數也數不清的語. 對於還沒有加入的語言, 由於正在研究怎樣在計算機中最好地編碼它們, 因而最終它們都將被加入. 這些語言包括 Tibetian, 高棉語, Runic(古代北歐文字), 埃塞俄比亞語, 其他象形文字, 以及各種各樣的印-歐語系的語言, 還包括挑選出來的藝術語言比如 Tengwar, Cirth 和 克林貢語(Klingon). UCS 還包括大量的圖形的, 印刷用的, 數學用的和科學用的符號, 包括所有由 TeX, Postscript, MS-DOS,MS-Windows, Macintosh, OCR 字體, 以及許多其他字處理和出版系統提供的字符.

ISO 10646 定義了一個 31 位的字符集. 然而, 在這巨大的編碼空間中, 迄今為止只分配了前 65534 個碼位 (0x0000 到 0xFFFD). 這個 UCS 的 16位子集稱為 基本多語言面 (Basic Multilingual Plane, BMP). 將被編碼在 16 位 BMP 以外的字符都屬於非常特殊的字符(比如象形文字), 且只有專家在歷史和科學領域裡才會用到它們. 按當前的計劃, 將來也許再也不會有字符被分配到從 0x000000 到 0x10FFFF 這個覆蓋了超過 100 萬個潛在的未來字符的 21 位的編碼空間以外去了. ISO 10646-1 標准第一次發表於 1993 年, 定義了字符集與 BMP 中內容的架構. 定義 BMP 以外的字符編碼的第二部分 ISO 10646-2 正在准備中, 但也許要過好幾年才能完成. 新的字符仍源源不斷地加入到 BMP 中, 但已經存在的字符是穩定的且不會再改變了.

UCS 不僅給每個字符分配一個代碼, 而且賦予了一個正式的名字. 表示一個 UCS 或 Unicode 值的十六進制數, 通常在前面加上 "U+", 就象 U+0041 代表字符"拉丁大寫字母A". UCS 字符 U+0000 到 U+007F 與 US-ASCII(ISO 646) 是一致的, U+0000 到 U+00FF 與 ISO 8859-1(Latin-1) 也是一致的. 從 U+E000 到 U+F8FF, 已經 BMP 以外的大范圍的編碼是為私用保留的.

什麼是組合字符?

UCS裡有些編碼點分配給了 組合字符.它們類似於打字機上的無間隔重音鍵. 單個的組合字符不是一個完整的字符. 它是一個類似於重音符或其他指示標記, 加在前一個字符後面. 因而, 重音符可以加在任何字符後面. 那些最重要的被加重的字符, 就象普通語言的正字法(orthographies of common languages)裡用到的那種, 在 UCS 裡都有自己的位置, 以確保同老的字符集的向後兼容性. 既有自己的編碼位置, 又可以表示為一個普通字符跟隨一個組合字符的被加重字符, 被稱為 預作字符(precomposed characters). UCS 裡的預作字符是為了同沒有預作字符的舊編碼, 比如 ISO 8859, 保持向後兼容性而設的. 組合字符機制允許在任何字符後加上重音符或其他指示標記, 這在科學符號中特別有用, 比如數學方程式和國際音標字母, 可能會需要在一個基本字符後組合上一個或多個指示標記.

組合字符跟隨著被修飾的字符. 比如, 德語中的元音變音字符 ("拉丁大寫字母A 加上分音符"), 既可以表示為 UCS 碼 U+00C4 的預作字符, 也可以表示成一個普通 "拉丁大寫字母A" 跟著一個"組合分音符":U+0041 U+0308 這樣的組合. 當需要堆疊多個重音符, 或在一個基本字符的上面和下面都要加上組合標記時, 可以使用多個組合字符. 比如在泰國文中, 一個基本字符最多可加上兩個組合字符.

什麼是 UCS 實現級別?

不是所有的系統都需要支持象組合字符這樣的 UCS 裡所有的先進機制. 因此 ISO 10646 指定了下列三種實現級別:

級別1

不支持組合字符和 Hangul Jamo 字符 (一種特別的, 更加復雜的韓國文的編碼, 使用兩個或三個子字符來編碼一個韓文音節)

級別2

類似於級別1, 但在某些文字中, 允許一列固定的組合字符 (例如, 希伯來文, 阿拉伯文, Devangari, 孟加拉語, 果魯穆奇語, Gujarati, Oriya, 泰米爾語, Telugo, 印.埃納德語, Malayalam, 泰國語和老撾語). 如果沒有這最起碼的幾個組合字符, UCS 就不能完整地表達這些語言.

級別3

支持所有的 UCS 字符, 例如數學家可以在任意一個字符上加上一個 tilde(颚化符號,西班牙語字母上面的~)或一個箭頭(或兩者都加).


——摘自:http://forum.linux.net.cn


Copyright © Linux教程網 All Rights Reserved