utf-8 and unicode faq
中國linux論壇翻譯小組 xlonestar[譯] 2000年2月這篇文章說明了在 posix 系統 (linux,unix) 上使用 unicode/utf-8 所需要的信息. 在將來不遠的几年里, unicode 已經很接近于取代 ascii 與 latin-1 編碼的位置了. 它不僅允許你處理處理事實上存在于地球上的任何語言文字, 而且提供了一個全面的數學與技朮符號集, 因此可以簡化科學信息交換. 【程序编程相关:如何正确理解PHP的错误信息】
by markus kuhn 【推荐阅读:建立个人网站的基础知识三:软件方面】
什么是 ucs 与 iso 10646? 【扩展信息:自动批量生成缩略图】
utf-8 編碼提供了一種簡便而向后兼容的方法, 使得那種完全圍繞 ascii 設計的操作系統, 比如 unix, 也可以使用 unicode. utf-8 就是 unix, linux 已經類似的系統使用 unicode 的方式. 現在是你了解它的時候了.
國際標准 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 實現級別?
... 下一页