Unicode

Unicode標誌

Unicode(中文:萬國碼、國際碼、統一碼、單一碼)是電腦科學領域裡的一項業界標準。它对世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。

Unicode伴隨著通用字符集的標準而發展,同時也以書本的形式[1]對外發表。Unicode至今仍在不斷增修,每個新版本都加入更多新的字符。目前最新的版本為2017年6月20日公布的10.0.0[2],已經收錄超過十萬個字符(第十萬個字符在2005年獲採納)。Unicode涵蓋的資料除了視覺上的字形、編碼方法、標準的字符編碼外,還包含了字符特性,如大小寫字母。

Unicode發展由非營利機構統一碼聯盟負責,該機構致力於讓Unicode方案取代既有的字符編碼方案。因為既有的方案往往空間非常有限,亦不適用於多語環境。

Unicode備受认可,並廣泛地應用於電腦軟體的國際化與本地化過程。有很多新科技,如可扩展置标语言(Extensible Markup Language,簡稱:XML)、Java程式語言以及現代的作業系統,都採用Unicode編碼。

起源與發展

Unicode是为了解决傳統的字元編碼方案的侷限而產生的,例如ISO 8859-1所定義的字元雖然在不同的國家中廣泛地使用,可是在不同國家間卻經常出現不相容的情況。很多傳統的編碼方式都有一個共同的問題,即容許電腦處理雙語環境(通常使用拉丁字母以及其本地語言),但卻無法同時支援多語言環境(指可同時處理多種語言混合的情況)。

Unicode编码包含了不同写法的字,如“ɑa”、“強/强”、“戶/户/戸”。然而在汉字方面引起了一字多形的認定爭議(詳見中日韓統一表意文字主題)。

在文字處理方面,統一碼為每一個字符而非字形定義唯一的代碼(即一個整數)。換句話說,統一碼以一種抽象的方式(即數字)來處理字符,並將視覺上的演繹工作(例如字體大小、外觀形狀、字體形態、文體等)留給其他軟件來處理,例如網頁瀏覽器或是文字處理器。

目前,幾乎所有電腦系統都支持基本拉丁字母,并各自支持不同的其他编码方式。Unicode为了和它们相互兼容,其首256字元保留給ISO 8859-1所定義的字元,使既有的西歐語系文字的轉換不需特別考量;并且把大量相同的字元重複編到不同的字元碼中去,使得舊有紛雜的編碼方式得以和Unicode編碼間互相直接轉換,而不會遺失任何資訊。舉例來說,全形格式區段包含了主要的拉丁字母的全形格式,在中文、日文、以及韓文字形當中,這些字元以全形的方式來呈現,而不以常見的半形形式顯示,這對豎排文字和等寬排列文字有重要作用。

在表示一個Unicode的字元時,通常會用「U+」然後緊接着一組十六進位的数字來表示這一個字元。在基本多文種平面(英文:Basic Multilingual Plane,簡寫BMP。又稱為「零號平面」、plane 0)裏的所有字元,要用四个数字(即两个char,16bit ,例如U+4AE0,共支持六萬多個字符);在零號平面以外的字元則需要使用五个或六个数字。舊版的Unicode標準使用相近的標記方法,但卻有些微小差異:在Unicode 3.0裏使用「U-」然後緊接着八个数字,而「U+」則必須隨後緊接着四个数字。

標準

位於美國加州的Unicode組織允許任何願意支付會費的公司和個人加入,其成員包含了主要的電腦軟硬體廠商,例如奧多比系統蘋果公司惠普IBM微軟施乐等。

20世纪80年代末,組成Unicode組織的商業機構,和國際合作的國際標準化組織因為電腦普及和資訊國際化的前提下,分別各自成立了Unicode組織[3]和ISO-10646工作小組。他們不久便發現對方的存在,大家為著相同的目的而工作。1991年,Unicode Consortium与ISO/IEC JTC1/SC2同意保持Unicode码表与ISO 10646标准保持兼容并密切协调各自标准进一步的扩展。雖然實際上兩者的字集編碼相同,但實質上兩者確實為兩個不同的標準。Unicode 1.1对应于ISO 10646-1:1993,Unicode 3.0对应于ISO 10646-1:2000,Unicode 3.2对应于ISO 10646-2:2001,Unicode 4.0对应于ISO 10646:2003,Unicode 5.0对应于ISO 10646:2003及附录1–3。

Unicode自版本2.0开始保持了向后兼容,即新的版本仅仅增加字符,原有字符不会被删除或更名。

統一碼聯盟在1991年首次發佈了The Unicode Standard。Unicode的開發結合了國際標準化組織所制定的ISO/IEC 10646,即 通用字元集。Unicode與ISO/IEC 10646在編碼的運作原理相同,但The Unicode Standard包含了更詳盡的實現資訊、涵蓋了更細節的主題,諸如位元編碼(bitwise encoding)、校對以及呈現等。The Unicode Standard也列舉了諸多的字元特性,包含了那些必須支援两种阅读方向的文字(由左至右或由右至左的文字阅读方向,例如阿拉伯文是由右至左)。Unicode與ISO/IEC 10646這兩個標準在術語上的使用有些微的不同。

在2005年,Unicode的第十萬個字元被引入成為標準之一,該字元被用於馬拉雅拉姆語

历史

截至目前的Unicode各版本及其發佈時間如下:

Unicode版本
版本 發布日期 書籍 對應ISO/IEC 10646版本 书写系统 字元
總計[a] 已知的擴增
1.0.0 1991年10月 ISBN 978-0-201-56788-5 (Vol.1) 24 7,161 最初包含的文字有:阿拉伯字母亞美尼亞字母孟加拉文注音符號西里爾字母天城文格鲁吉亚字母希臘字母古吉拉特文古木基文諺文希伯來字母平假名卡納達文片假名寮文字拉丁字母馬拉雅拉姆文奧里亞文泰米爾文泰盧固文泰文字藏文[4]
1.0.1 1992年6月 ISBN 978-0-201-60845-8 (Vol.2) 25 28,359 定義中日韓統一表意文字最初的20,902個字[5]
1.1 1993年6月 ISO/IEC 10646-1:1993 24 34,233 於原有2,350個諺文字母的基礎上新增4,306個諺文字母。移除藏文[6]
2.0 1996年7月 ISBN 978-0-201-48345-1 ISO/IEC 10646-1:1993與其第5-7修訂版 25 38,950 移除原有的諺文字母設置,於新的編碼範圍更換成11,172個新的諺文字母。藏文重新加入,但編碼位置更換。代理字符機制建立,並將第15與第16平面分配給私人使用區[7]
2.1 1998年5月 ISO/IEC 10646-1:1993與其第5-7修訂版,以及第18修訂版中新增的2個字元 25 38,952 新增歐元符號與 对象替换字符[8]
3.0 1999年9月 ISBN 978-0-201-61633-0 ISO/IEC 10646-1:2000 38 49,259 新增切罗基文埃塞俄比亚语高棉语蒙古语缅甸语歐甘字母卢恩字母僧伽罗语叙利亚语它拿字母加拿大原住民音節文字彝文,以及部分盲文图案。[9]
3.1 2001年3月 ISO/IEC 10646-1:2000

ISO/IEC 10646-2:2001

41 94,205 新增 犹他字母、哥特字母古意大利字母音乐符号拜占庭音乐符号,追加了42711个中日韩统一表意文字[10]
3.2 2002年3月 ISO/IEC 10646-1:2000與其第1修訂版

ISO/IEC 10646-2:2001

45 95,221 新增菲律宾文字布锡文、 哈努诺文、他加禄语、 塔格巴奴亚文。[11]
4.0 2003年4月 ISBN 978-0-321-18578-5 ISO/IEC 10646:2003 52 96,447 新增塞浦路斯音节文字, 林布字母,线形文字B奥斯曼亚字母萧伯纳字母德宏傣文乌加里特字母以及六十四卦[12]
4.1 2005年3月 ISO/IEC 10646:2003與其第1修訂版 59 97,720 新增 布吉文,格拉哥里字母佉卢文西双版纳傣文古波斯语, 锡尔赫特文和提非纳文科普特字母希腊语区块中分离了出来。新增了 古希腊音乐符号。[13]
5.0 2006年7月 ISBN 978-0-321-48091-0 ISO/IEC 10646:2003與其第1、2修訂版,以及第3修訂版中新增的4個字元 64 99,089 新增巴厘语楔形文字, 西非书面文,八思巴文腓尼基字母[14]
5.1 2008年4月 ISO/IEC 10646:2003與其第1-4修訂版 75 100,713 新增 卡利亚语,占婆字母, 克耶黎语, 雷布查语,利西亚语吕底亚语, 桑塔利文, 拉让文, 索拉什特拉文,巽他语瓦伊语。同时增加了斐斯托斯圆盘麻将多米诺骨牌上的符号。对缅甸语做了重要的补充,追加了手抄缩写的额外字母,追加了大写ẞ[15]
5.2 2009年10月 ISO/IEC 10646:2003與其第1-6修訂版 90 107,361 新增阿维斯陀语, 巴姆文,埃及象形文字加汀纳符号表,涵盖1071个符号),亚拉姆语, 巴拉维碑铭体, 帕提亚碑铭体,爪哇语凯提文, 傈僳族字母, 曼尼普尔文, 古南阿拉伯字母,古突厥语, 撒玛利亚语, 大潭文和 大越文。追加4,149个中日韩统一表意文字(CJK-C),同时扩展了古韩语吠陀梵语的字符。[16]
6.0 2010年10月 ISO/IEC 10646:2010與 印度盧比符號英语Indian rupee sign 93 109,449 新增 巴塔克字母,婆罗米文字, 曼达字母,纸牌符号,交通标志地图符号, 炼金符号,颜文字绘文字。追加222个额外的中日韩统一表意文字(CJK-D)。[17]
6.1 2012年1月 ISO/IEC 10646:2012 100 110,181 查克马字母, 麦罗埃文, 麦罗埃象形文字, 波拉德文字, 夏拉达文, 索拉僧平文字, and 泰克里文.[18]
6.2 2012年9月 ISO/IEC 10646:2012與土耳其里拉符號 100 110,182 土耳其里拉符號[19]
6.3 2013年9月 ISO/IEC 10646:2012與6個字元 100 110,187 5个双向排版符号。[20]
7.0 2014年6月 ISO/IEC 10646:2012與其第1、2修訂版,以及俄羅斯盧布符號 123 113,021 新增 巴萨字母, 高加索阿尔巴尼亚字母, 杜普雷嚴速記, 爱尔巴桑字母,帕拉瓦文, 可吉文, 库达瓦迪文,线形文字A, 马哈佳尼文,摩尼教字母, 门得文字, 莫迪字母, 默文,纳巴泰字母, 古北阿拉伯文, 古彼尔姆语字母, 杨松录苗文, 帕米拉文字, 袍清豪文, 诗篇巴列维文,悉昙文字, 提尔胡塔文, 瓦兰齐地文以及装饰符号[21]
8.0 2015年6月 ISO/IEC 10646:2014與其第1修訂版,以及喬治亞拉里符號、9個中日韓統一表意文字與41個表情符號[22] 129 120,737 增加阿洪姆文, 安纳托利亚象形文字, 哈坦文, 穆尔塔尼文,古匈牙利字母, 书写符号,5,771个中日韩统一表意文字字符,切罗基语小写字母,以及五种绘文字肤色修改字符。[23]
9.0 2016年6月 ISO/IEC 10646:2014与其第1、2修订版,阿德拉姆字母、尼泊尔纽瓦字母、日本电视符号和74个绘文字表情与符号。[24] 135 128,237 新增 阿德拉姆字母, 比奇舒奇文,象雄文, 尼泊尔纽瓦字母, 欧塞奇字母,西夏文以及74个绘文字[25]
10.0 2017年6月 ISO/IEC 10646:2017,新增56个绘文字符号,385个變體假名字符,和3个札那巴札尔字符[2] 139 136,755 札那巴札尔索永布文字、 马萨拉姆共地文字、女书變體假名(非标准平假名),7,494个中日韓統一表意文字与56个繪文字[26]
其他语言
Afrikaans: Unicode
Alemannisch: Unicode
አማርኛ: ዩኒኮድ
العربية: يونيكود
অসমীয়া: ইউনিক’ড
asturianu: Unicode
azərbaycanca: Unicode
Boarisch: Unicode
беларуская: Унікод
беларуская (тарашкевіца)‎: Юнікод
български: Уникод
বাংলা: ইউনিকোড
brezhoneg: Unicode
bosanski: Unicode
català: Unicode
ᏣᎳᎩ: ᏳᏂᎪᏛ
کوردی: یوونیکۆد
čeština: Unicode
Чӑвашла: Юникод
Cymraeg: Unicode
dansk: Unicode
Deutsch: Unicode
Ελληνικά: Γιούνικοντ
English: Unicode
Esperanto: Unikodo
español: Unicode
eesti: Unicode
euskara: Unicode
فارسی: یونی‌کد
suomi: Unicode
français: Unicode
Gaeilge: Unicode
galego: Unicode
ગુજરાતી: યુનિકોડ
עברית: יוניקוד
हिन्दी: यूनिकोड
hrvatski: Unikod
magyar: Unicode
Հայերեն: Յունիկոդ
interlingua: Unicode
Bahasa Indonesia: Unicode
Ilokano: Unicode
íslenska: Unicode
italiano: Unicode
日本語: Unicode
Basa Jawa: Unicode
ქართული: უნიკოდი
қазақша: Юникод
ಕನ್ನಡ: ಯುನಿಕೋಡ್
한국어: 유니코드
कॉशुर / کٲشُر: यूनिकोड
kurdî: Unicode
Кыргызча: Юникод
lietuvių: Unikodas
latviešu: Unikods
मैथिली: युनिकोड
олык марий: Unicode
മലയാളം: യൂണികോഡ്
монгол: Юникод
मराठी: युनिकोड
Bahasa Melayu: Unicode
မြန်မာဘာသာ: ယူနီကုဒ်
Plattdüütsch: Unicode
नेपाली: युनिकोड
नेपाल भाषा: युनिकोड
Nederlands: Unicode
norsk nynorsk: Unicode
norsk: Unicode
occitan: Unicode
ਪੰਜਾਬੀ: ਯੂਨੀਕੋਡ
polski: Unikod
português: Unicode
română: Unicode
русский: Юникод
संस्कृतम्: युनिकोड
саха тыла: Юникод
Scots: Unicode
srpskohrvatski / српскохрватски: Unikod
සිංහල: යුනිකෝඩ්
Simple English: Unicode
slovenčina: Unicode
slovenščina: Unicode
shqip: Unicode
српски / srpski: Unikod
Basa Sunda: Unicode
svenska: Unicode
తెలుగు: యూనికోడ్
тоҷикӣ: Юникод
Tagalog: Unikodigo
Türkçe: Unicode
ئۇيغۇرچە / Uyghurche: Unicode
українська: Юнікод
اردو: یونیکوڈ
Tiếng Việt: Unicode
walon: Unicôde
吴语: Unicode
მარგალური: იუნიკოდი
ייִדיש: יוניקאד
Yorùbá: Unicode
文言: 萬國碼
Bân-lâm-gú: Unicode
粵語: 統一碼