[轉錄]Re: [問題] 關於Unicode補完計畫?

看板ck57th317作者 (宅斯拉)時間16年前 (2007/12/29 18:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
※ [本文轉錄自 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,
我無法理解軟體不 支援Unicode跟使用假日文的關連...
11/02 17:41
如果你慣用的軟體不支援 unicode,你必須用它讀日文檔 但一直沒出支援 unicode、功能又接近或更強的新軟體時,你就知道了

11/02 17:44,
其實政府自己也要負責任,當年其實有套編碼CCCII是全部
11/02 17:44

11/02 17:44,
全部的東亞字元的,不過見鬼的是美國的圖書館採用了
11/02 17:44

11/02 17:46,
我們自己確跑去搞個不三不四的BIG-5 民國七零年代還出現
11/02 17:46

11/02 17:47,
軟體公司大家各唱各的調,萬碼奔騰的見鬼現象.....
11/02 17:47

11/02 17:49,
如果一切回歸CCCII(現在的iso2022)早就什麼都不用想了
11/02 17:49

11/02 17:46,
我忘記在哪講過了,當時微軟進來台灣時是拿倚天的BIG5-E
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,
打一打想補個e04阿.....是哪個丁丁搞出來的
11/02 17:53

11/02 17:59,
所以日本人討厭微軟 (咦,是這樣嗎? XD)
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,
之前聽說MS有詢問政府的意見啦,但是政府自己內部意見
11/02 18:27

11/02 18:28,
都搞不定了,最後就是...Orz 相對的,有統一意見的HK
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,
說穿了就是用 CP950看不到 日文平假片假名本來就是應該的事
11/02 21:05

11/02 21:06,
使用unicode的軟體才可以正常看到~
11/02 21:06

11/02 21:07,
而UAO做擴充 跟 匯入個人造字區 是差不多意思的
11/02 21:07

11/02 21:09,
一個做不好地方 是內附的轉換工具~預設會讓user 轉BIG-E
11/02 21:09

11/02 21:11,
另一個是就推廣了櫻花輸入法~ 而不是用日文輸入法
11/02 21:11

11/02 22:23,
看到我有辦法食的專業文了 謝謝<(_ _)>
11/02 22:23

11/03 00:00,
總之就是CP950的問題啦。Big5-2003已經收錄日文假名了
11/03 00:00

11/03 16:00,
推專業!!
11/03 16:00

11/04 18:33,
看了那麼多篇終於有人提到微軟不改BIG5字碼的問題了,
11/04 18:33

11/04 18:34,
有人知道微軟為何死都不改嗎?
11/04 18:34
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.249.236
文章代碼(AID): #17TXhhSh (ck57th317)
文章代碼(AID): #17TXhhSh (ck57th317)