[轉錄]Re: [問題] 關於Unicode補完計畫?
※ [本文轉錄自 C_Chat 看板]
作者: mstar (Wayne Su) 看板: C_Chat
標題: Re: [問題] 關於Unicode補完計畫?
時間: Fri Nov 2 17:33:20 2007
(本篇在某些細節處可能會稍有錯誤)
系統字元編碼 (ASCII、codepage)
很久很久以前,美國人做出電腦時只考慮了歐洲語系,沒考慮到東方語系的問題
當時採用的國別 codepage 方法,編碼只有 8 bit (1 byte),最多 255 個字
前面 127 個字元是一些字母、符號和控制字元,相容於 ASCII 標準
後面 127 個字元叫「高位元」(因為用到 8 bit),則是按 codepage 而不同
預設的 codepage 是 437,裏面有西歐語言字母和表格框線的符號
http://en.wikipedia.org/wiki/Code_page_437
東亞語言雙字元系統編碼 (DBCS)
之後,東亞地區也有很多人在使用電腦了,但總不能一直只有英文字吧?
於是各國就開始發展各國語言的編碼系統
因東亞文字數量太多,就採用兩個 byte 來組成文字,理論上最多可有 65535 個字
(實際上當然不可能有這麼多,因為低位元部分要保留給英文字母和符號,
第一碼只能用高位元,否則到時 at 這樣普通的英文字都被轉成文字)
當時各國各有自己的編碼,台灣香港 BIG5、日本 SJIS、中國 GB、韓國 KS
例如在 BIG5 裏面「特」字的編碼是 AF53,表示由十六進位的 AF、53 兩碼組成
AF (175) 是「 >> 」,53 (83) 是「R」
只要在中文模式下,看到這兩個字元組合在一起,系統就會轉成「特」字
因此常有一些英文軟體畫的框線在中文模式下變成亂碼
(eg. C4C4「──」 會變成「闡」)
而在 SJIS 裏面,AF53 是「ッR」,在 GB 裏面是「瘲(的簡體)」
也就是說,同樣的碼用不同的系統來看會是不同的字
BIG5
當時 BIG5 編碼是非常急就章而推出的,選字根本就是依據教育部的常用字標準,
所以很多字都沒被選入 (eg.堃、煊、喆) 但因為 BIG5 變成主流,大家只好將就著用
(政府戶政、圖書管理等系統用不同的編碼,所以字數多很多)
Unicode
後來有一群人/公司開始發展 unicode,也就是將世界上主要的文字統一成一種編碼
只要電腦支援這編碼、有相對應的字型,就可以看到所有文字
http://zh.wikipedia.org/wiki/Unicode
unicode 編碼方式和 BIG、GB、SJIS 等傳統編碼 (稱為 DBCS) 有點不一樣,
以目前最常用的 UTF8來說,它按照文字的屬性分為用單一 byte 組成的、用
兩 byte 組成的...到用四 byte 組成的,普通的中文字多是二、三 byte 組成
http://zh.wikipedia.org/wiki/UTF-8
有人認為中文、日文、韓文、越南文中很多漢字其實都一樣或是差不多,
所以推動 CJKV,以將編入 unicode 中的漢字縮減
http://zh.wikipedia.org/wiki/CJKV
以上是講古,以下開始講到重點了
倚天中文
'80、'90 年代初,佔市場比例最大的是「倚天」的中文系統
倚天當時在 BIG5 保留的「造字區」放了一些部首、符號、日文假名、俄文字母
在 DOS 時代很常被使用者用到,累積了不少用到那些字的文件資料
萬惡的淵藪、一切問題的起源:微軟
時代繼續發展,萬惡的微軟推出 Windows,將正體中文編為 codepage 950
但是,竟然沒把前述造字區中的符號日文、俄文字母部分收進去!
之後一直到 Win2003,除了新增了歐元符號以外,還是沒日文字
http://zh.wikipedia.org/wiki/Big5
這就是今天發生這個問題的起源!
(Win9x 時代,大多是用匯入 eudc、font.24 等使用造字區的方式來解決)
到了 Win NT 之後,系統都採用 unicode 做內部處理,
如果應用軟體也使用 unicode,那當然沒有問題
但是對於一些仍用以前 DBCS 編碼的軟體,Windows 就使用 codepage 轉換方式
CP 950 (正體中文) unicode CP 932 (日文)
特 (AF53) <-> 特 (U+7279) <-> 特 (93C1)
也就是:從 DBCS 軟體貼到 unicode 的軟體時,系統會做內碼切換,反之亦然
但是,在繁體中文的 CP 950 下並沒有日文假名,當然更沒有日製漢字
所以在中文 Windows 下,不支援 unicode 的軟體會導致此類未對應的 unicode 文字
在轉換時會出問題,變成 ? 或 _,若檔名就如此則連該檔案都無法開
(漢字部則拜 CJKV 所賜,大多可以直接轉換)
簡單來說,若是有名稱含日文假名的檔案
因為 Windows 檔案系統可處理 unicode,所以 Windows 下看得到日文
而不能讀 unicode 的軟體則只能看到 ? ,連檔案都開不了
CP 932 (日文) unicode CP 950 (正體中文)
あ (82A0) <-> あ (U+3042) -> ?
(U+F6F8) <-> あ (C6E8)
註:U+F6F8 是位於 unicode 的造字區 ↖ 必須有裝造字才看得到
U+3042 才是 あ 的正式編碼
Unicode 補完計畫 (Unicode at Once)
「Unicode 補完計畫」就是為了解決這問題而出現的
當初它的名字叫「Big5 Extension」,意思就是擴充 BIG5 缺少的部分
(結果改成現在名字後反而產生被人誤會的問題)
它的做法:
CP 932 (日文) unicode CP 950 (正體中文)
あ (82A0) <-> あ (U+3042) <-> あ (C6E8)
(U+F6F8) ↗
修改 unicode 對 CP950 的轉換對照表
使 unicode 日文假名在非 unicode 狀況下改去用原倚天的編碼位置
甚至還加入 unicode 日製漢字、簡體中文、特殊正體中文字 (也是去用造字區)
Unicode 補完計畫的問題點
由於對應的是 CP 950 沒有使用到的區域 (原 BIG5/倚天 的造字區)
因此不支援 unicode 軟體弄出來的字,在未裝 uao 的電腦上看時會是空白
使用者若沒注意到這點而大量用不支援 unicode 的軟體處理檔案,結果就發生慘案
unicode CP 950 (正體中文)
(U+F6F8) <- あ (C6E8)
↖ 必須有裝造字才看得到
要有裝 uao 的電腦才能看到字
unicode CP 950 (正體中文)
あ (U+3042) <- あ (C6E8)
當然,若都是在 unicode 環境下就完全沒有問題了
unicode unicode
あ (U+3042) <-> あ (U+3042)
只不過,目前不支援 unicode 的軟體仍為數不少
或者雖有支援但軟體功能卻不如未支援的軟體好用
只要還有軟體未支援 unicode,uao 就仍會一直存在、就會有人去使用
整理
在有 uao 的系統 在無 uao 的系統
字碼 支援 unicode 不支援 unicode 支援 unicode 不支援 unicode
Unicode
あ (U+3042) あ (U+3042) あ (C6E8) あ (U+3042) ?
Unicode
(U+F6F8) あ (U+3042) あ (C6E8) (U+F6F8) あ (C6E8)
必須有裝造字才看得到 ↗
BIG5
あ (C6E8) あ (U+3042) あ (C6E8) (U+F6F8) あ (C6E8)
必須有裝造字才看得到 ↗
SJIS
あ (82A0) あ (U+3042) あ (C6E8) あ (U+3042) ?
あ (82A0)
參考資料
http://uao.cpatch.org/index.php?%E5%8E%9F%E7%90%86%E4%BB%8B%E7%B4%B9
http://uao.cpatch.org/index.php?%E5%8E%9F%E7%90%86%E8%A3%9C%E5%85%85
--
你怎麼這麼綠啊! ← 藍色黨blahblah.. 綠色黨blahblah.. → 你怎麼這麼藍啊!
\ / \ /
○ ○ ○ ○
藍 <<<<<<<<<<<<<<<>>>>>>>>>>>>>>> 綠 藍 <<<<<<<<<<<<<<<>>>>>>>>>>>>>>> 綠
「政治單細胞生物」的眼光見解:只要光譜不夠近不同邊者,就算再中肯一樣是敵人
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.46.166
推
11/02 17:41,
11/02 17:41
如果你慣用的軟體不支援 unicode,你必須用它讀日文檔
但一直沒出支援 unicode、功能又接近或更強的新軟體時,你就知道了
推
11/02 17:44,
11/02 17:44
→
11/02 17:44,
11/02 17:44
→
11/02 17:46,
11/02 17:46
→
11/02 17:47,
11/02 17:47
→
11/02 17:49,
11/02 17:49
推
11/02 17:46,
11/02 17:46
→
11/02 17:48,
11/02 17:48
但很奇怪,正體中文 CP 950 加了那些符號進去,就是日文假名、俄文字母不收
簡體中文 CP 936 連日製漢字、常用正體字都弄進去了,就 CP 950 破破爛爛啥都缺
從 Win 3.1 到 Win2003,一直維持這情形
推
11/02 17:49,
11/02 17:49
→
11/02 17:51,
11/02 17:51
→
11/02 17:52,
11/02 17:52
→
11/02 17:53,
11/02 17:53
→
11/02 17:59,
11/02 17:59
推
11/02 18:13,
11/02 18:13
推
11/02 18:16,
11/02 18:16
※ 編輯: mstar 來自: 61.229.46.166 (11/02 18:18)
推
11/02 18:27,
11/02 18:27
→
11/02 18:28,
11/02 18:28
→
11/02 18:28,
11/02 18:28
推
11/02 19:46,
11/02 19:46
推
11/02 19:57,
11/02 19:57
推
11/02 21:05,
11/02 21:05
→
11/02 21:06,
11/02 21:06
→
11/02 21:07,
11/02 21:07
→
11/02 21:09,
11/02 21:09
→
11/02 21:11,
11/02 21:11
推
11/02 22:23,
11/02 22:23
推
11/03 00:00,
11/03 00:00
推
11/03 16:00,
11/03 16:00
推
11/04 18:33,
11/04 18:33
→
11/04 18:34,
11/04 18:34
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.249.236
討論串 (同標題文章)