Unicode,或者叫通用碼 (通用碼),萬國碼 (萬國碼; 華語呼音: Wanguoma) 是1種編碼標準。Unicode日字是英語uni佮code 2字組合起來的。Uni有 "通用" 的意思; code是 "浮碼" 的意思。 Unicode的1个重要的理念是欲設計1透會使處理世界各種文字的編碼。
簡單講,通用碼是1个國際標準。伊的目標是共處理世界各種語言的文字的字圖做編碼。共每1个字圖對應到1个整數。織的整數叫做織的字圖的尾位。按呢會使共文字轉化最數字,才與發就用電腦處理佮保存。
通用碼有一寡技術上的限制佮問題。嘛有一寡批評。毋過,通用碼漸漸變做軟體國際化佮軟體多語言環境這2項事工上主流的編碼。Microsoft Windows NT佮後來的Microsoft Windows 2000,Microsoft Windows XP用UTF-16來保存系統內部用的文字。UNIX類的系統,像Linux,BSD (OpenBSD,FreeBSD) 佮Mac OS X用UTF-8來表現多語言的文字。
起源[修改]
早期電腦用的編碼主要針對英語來設計。加焦適合處理英文。後來漸漸增加歐洲其他主要語言用的字母。毋過,無仝國家所需要佮真家的字母攏無仝。結果是出現真濟無法度相交通的編碼。用法語編碼系統保存的資料,若用德語編碼系統來讀佮處理會重耽去。針對1種語言的編碼系統設計的軟體加焦會使處理彼種語言。欲共織的軟體解佮會使處理別種語言是真費氣的代誌。欲用電腦處理1總以上的語言會使講真困難。若是考慮世界其他的語言佮文字,織的問題家焦會愈來愈傷重。
若是有1套編碼會使處理世界各種文字。無仝語言的資料交通就變簡單。同時處理多語言嘛遍簡單。若是1套軟體利用這種編碼來設計,織的軟體,就算講開始是針對母1總語言來設計,嘛會使較簡單就解來支援別總語言佮文字。遮的利益會使講是早期開始推捒通用碼的動機。
欲了解推捒通用碼這種編碼標準的動機,需要生了搞啥物是編碼。用英語做例。英語需要26个大寫的字 (ABC...XYZ), 26个小寫的字 (abc...xyz), Arabic數字 (0123456789),佮1寡標點 (字)。欲用電腦處理英語,需要1个對照表,織的表加每1个字對應1个獨一个2進位數字。毋過,中要的是,逐个人攏愛用仝款的對照表。按呢逐家遮有法道溝通,欲加遮的2進位數字翻譯轉來做英語才囮重耽。
ASCII[修改]
1个編碼系統會使對應到偌濟的字圖愛看織的編碼用規个bit來保存編碼表。 1个7-bit的2進位數字對應的泛圍是按0到2^7-1=127(剔做2个7次方)。莎與, 1个7-bit的編碼會使上濟對應到128个字圖。仝款的道理, 1个8-bit的編碼會使對應到256个字圖。 1个16 bit的編碼會使對應到 ??? 的字圖。用愈濟bit的編碼會使對應到愈濟的字圖,毋過,欲保存1个字需要的RAM嘛愈濟。
早期的電腦, RAM是真珍貴的資源。怹對按呢,逐家會用細的編碼。處理英語的是,算算7-bit的編碼就有夠。這做成7-bit的ASCII編碼標主。毋過,其他用羅馬字文字系統的Europe語研,遮遮食要1歌有加撇音附蒿的字,像 'å',或者是1寡連字,像 'œ'。遮的字(字圖) 無包括佇ASCII編碼。 Europe國家,開始製程8-bit的編碼。遮的8-bit編碼,對0到128个尾位佮ASCII完全相siâng。
組好的字母佮組合的字母[修改]
為著欲佇有限的編碼空間內蒂之源愈濟愈好的文字,通用碼使用組哈的字母的做法。用仔織的字做例。通用碼有號織的字家己1个尾位 (U+00E1)。毋過,咱毋a會使想講織的字是a (尾位U+0061) 佮ˊ來組哈的。佇通用碼有定義1个組哈用 (combining) 的ˊ (尾位U+0301)。 N̄a是出現U+0061 U+0301這2个數字相連,咱著愛了解這是愛教頭前U+0061代表的亞佮後壁U+0301代表的ˊ,組合最仔。用仔 (U+00E1) 1个數字來表示羅馬字字母的仔,這種叫組好的字母。 (precomposed character)。用U+0061 U+0301來表示,這種叫組合的字母 (composed character)。樹U+0301這種的,照組合用字母 (combining character)。
1个車造字母 (base character) 後壁會使接1个以上的組合用字母,形成1个組合的字母。若是遮的組合的字母攏欲改做且好的字母,有家己的尾位。限奶會需要用調真濟尾位,怹對組合的可能性有真濟。毋過,早前的其他編碼一般無用組合。為著piāⁿ離子女家用舊編碼的資料交通, Europa的主要語言用的文字的字母,伊般佇通用碼內攏有對應的組合夥的字母。為著詔告1的字母可能有1的以上的表示法 (租好的合組合的)。通用碼有邱定2个表示按炸性仝意 (相siâng),織的法則叫canonical equivalence。
用漢字的 '明' 織的字做假想的例 (實際上Unicode對明的次女是做單獨一字,毋是兩字的組合)。織的二一般干焦用1个字圖來印刷,有督逐的尾位。毋過,織的字嘛會使拆做2个字圖,分別是 '日' 佮 '月'。用這2个字圖來印刷,可能會印出像 '日月' 按呢的圖 ,真歹看。
毋過,共 '明' 拆做2个字圖來印刷有1个好厝: 減少需要的字圖。佇1个字用1个字圖的情形,欲應 '日','月','明',需要3个字圖。若是 '明' 拆做2个字圖應,干焦需要2个字圖。怹對字圖的數目一中是有限。欲用遮的有限的字圖來印刷比字圖數目閣較濟的字的時,需要共字拆做1个以上的字圖來應。也就是用字圖去組合 (鬥) 出新的字。
欲用2个以上的字圖來組合出1个字的時,需要用1寡印刷技術,若無應的字的像 '日月' 按呢真歹看。
顯示的問題[修改]
欲正確顯示組合的字母事要較複雜的字型顯示技術。遮的技術毋是通用碼標準的1部分。總管怹對大部分的文字干焦需要用且好的字母,電腦軟底對組合字母的支援到今猶oân無到好。與發度正確顯示組合字母的基層字型技術有OpenType (Adobe System佮Microsoft制定),AAT (Apple Computer制定),佮Graphite (SIL International制定)。毋過,大份的軟體無去利用遮的字型技術,大份的字型嘛無支援,所以無法度正確顯示組合的字母。比論就白話字來講,真濟白話字字母毋是代先著已經組合好勢的通用碼,也就是講一定愛用組合的方式。大部分的軟體咧顯示遮的字母的時會重耽去 (變做亂碼)。
雙向文字[修改]
有的文字系統是按倒爿向正爿寫,像Latin文字。有的是按正爿向倒拼寫,像希伯來語佮阿拉伯語。
UTF[修改]
UTF-8[修改]
尾位的泛圍 16進位 |
UTF-16 |
UTF-8 binary |
Notes |
000000 - 00007F |
00000000 0xxxxxxx |
0xxxxxxx |
ASCII equivalence range; byte begins with zero |
000080 - 0007FF |
00000xxx xxxxxxxx |
110xxxxx 10xxxxxx |
first byte begins with 110 or 1110, the following byte(s) begin with 10 |
000800 - 00FFFF |
xxxxxxxx xxxxxxxx |
1110xxxx 10xxxxxx 10xxxxxx |
010000 - 10FFFF |
110110xx xxxxxxxx 110111xx xxxxxxxx |
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
UTF-16 requires surrogates; an offset of 0x10000 is subtracted, so the bit pattern is not identical with UTF-8 |
UTF-16[修改]
這拋猶未有人寫。請鬥補充內容.
UTF-32[修改]
這拋猶未有人寫。請鬥補充內容.
BiDi[修改]
這拋猶未有人寫。請鬥補充內容.
Consortium[修改]
這拋猶未有人寫。請鬥補充內容.
UCS[修改]
這拋猶未有人寫。請鬥補充內容.
漢字統一 (番unification)[修改]
這拋猶未有人寫。請鬥補充內容.
這拋猶未有人寫。請鬥補充內容.
版本歷史[修改]
- 1991年Unicode 1.0
- 1993年Unicode 1.1
- 1996年Unicode 2.0
- 1998年Unicode 2.1
- 1999年Unicode 3.0
- 2001年Unicode 3.1
- 2002年Unicode 3.2
- 2003年Unicode 4.0
- 2005年Unicode 4.1
- 2006年Unicode 5.0
白話字佮通用碼[修改]
請參考Taigi Unicode這篇文章。
外部連結[修改]