基本介紹
- 中文名:Unicode補完計畫
- 又名:Unicode補完計畫
- 開發:中國台灣
- 類別:自由軟體
簡介,歷史,背景與原理,作業平台,ANSI架構的Windows,字元的來源,使用上的問題,網頁交換,新舊檔名,其他問題,
簡介
要留意的是“Unicode補完計畫”不等於 Unicode。當你看見有人說“我安裝了Unicode”,通常是他把“Unicode補完計畫”和 Unicode 搞混了。
“Unicode補完計畫”也不是用來解決軟體顯示亂碼的問題。電腦內要有相關的字形 (例如支援整個 Unicode 漢字的字形) ,才能在電腦顯示器看到。因為“Unicode補完計畫”只包含了編碼轉換表,並不包括字形在內。而一些日語遊戲裝在Windows XP所出現的亂碼問題,應使用Microsoft AppLocale內碼轉換器等程式去作內部轉換。
歷史
2001年9月: Unicode計畫1.0版發表。支援日文假名。
2001年10月: Unicode計畫2.0版發表。支援第一水平漢字單向對應。
2002年4月: 中文化聯盟發表Big5 Extension擴充規格。一口氣支援大量漢字。
2002年5月: Big5 Extension擴充規格與Unicode計畫同意整合。
2002年6月: 有鑒於Big5 Extension易與中推會的Big5E名稱混淆,正式決定統一以Unicode計畫作為名稱,由中文化聯盟發布。
背景與原理
由於大五碼僅收錄13,053個漢字,對不少使用者而言確實不足夠,例如日語假名、人名、香港特殊用字、科學用的特殊字等等都欠奉。長久以來解決這種問題的方式都是加裝各種外字集,例如櫻花輸入法(支援日語假名)、中國海字集、香港增補字元集(HKSCS)等。但目前世界的潮流是以使用包含最多字數的 Unicode 為目標。以外字集收錄字元根本難以作為資料交換之用,除非對方也安裝了該外字集。
作業平台
“Unicode補完計畫”修改作業系統中的字碼表,處理Unicode和非Unicode字碼的對應。“Unicode補完計畫”首先是在以 Unicode 架構為核心的微軟 Windows NT (包括 Windows 2000 和 Windows XP) 作業系統上開發,之後又支援了以 ANSI 架構為核心的 Windows 98 和 Windows Me。
Linux也有另外的使用者,開發Linux版的補完計畫。
Palm上也有另外的使用者,開發對應的補完計畫:
CJKOS 版本
掌龍版本
Unicode架構的Windows
包括Windows 2000、Windows XP、Windows Server 2003,與未來的Windows系列。
修改的檔案:
$SYSDIR\C_950.nls Unicode←→Big-5對照表
如果使用者有安裝Microsoft Applocale,安裝程式會將$WINDIR\AppPatch\AppLoc.tmp以一個同名的空白唯讀檔案取代。
如果使用者沒有安裝Microsoft Applocale,安裝程式會直接產生一個空白的唯讀檔案: $WINDIR\AppPatch\AppLoc.tmp。
ANSI架構的Windows
包括Windows 98、Windows ME。
修改的檔案:
$SYSDIR\CP_950.nls IE (檔案總管) 顯示時使用的轉碼錶
$SYSDIR\unicode.bin 負責跟檔案系統操作相關的轉碼錶 (如果您有興趣可以這樣玩:把 $sysdir\unicode.bin 砍了,在重開機後,系統會使用最原始的預設 CodePage:437 顯示,在這情況下所有存在於檔名中的中文字都會以‘__’顯示,這包括大部份的桌面捷徑和幾乎整個‘開始’功能表)
$SYSDIR\GDI.exe 在顯示字型時,取得字型的檔案 (將 CodePage 內碼依此檔內含之轉碼錶轉換成 unicode 碼,再以此 unicode 碼到 TrueType 字型檔中提取字型)
註:$SYSDIR 是代表某路徑的一個變數,在 Windows XP 預設是 C:\WINDOWS\system32,在 Windows 2000 預設是 C:\WINNT\system32,在 Windows 98 和 Windows ME 預設是C:\WINDOWS\system。
$WINDIR 也是一個路徑變數,在 Windows 98、 Windows ME 和 Windows XP 預設是C:\WINDOWS,Windows 2000 預設是 C:\WINNT。
字元的來源
在“Unicode補完計畫”的第2版中,字元的基本來源是參照“中國海字集”,再加上中國海字集所遺漏的簡體中文、日語等字而成。
使用上的問題
“Unicode補完計畫”原先的立意是避免利用造字,以達成擴充Big-5的目的:但由於Unicode環境尚未成熟,以及使用者的誤用,“Unicode補完計畫”有時反而為使用者本身──甚至其他使用者──帶來了其他的麻煩。
網頁交換
這是“Unicode補完計畫”使用者可能會影響到其他使用者的最大問題。
一般的網頁瀏覽器或電子郵件客戶端,在使用者打出了非該軟體顯示畫面預設編碼(例如寫一封用 Big-5 編碼的信件)的字元時,軟體會自動把這些字元轉換成Unicode 參照碼,例如“堃”會被自動轉換成“堃”;然而在補完後的電腦,由於即使打出的是原非大五碼預設的字元,也會被認為是大五碼的字元(裝了“Unicode補完計畫”的系統,在對照字碼表後,發現當中有這個字),因此就不會被轉換了。這也就是說,其他使用者不一定能看見該使用者所打的字──除非他們也有裝“Unicode補完計畫”。於是這反而與“Unicode補完計畫”的創立宗旨背道而馳:原先避免以外字集解決缺字的“Unicode補完計畫”,反而變成了另一套外字集。
解決方案:當使用者安裝“Unicode補完計畫”時,會獲得一份“HTML外字兼容轉換器”(另外也有網路版),可以直接把原本不屬於大五碼的字元轉換為參照碼;接下來只要使用這份夾雜著參照碼的檔案,就能讓其他使用者也見到這些字元。另一種做法是,像推廣櫻花輸入法一樣推廣“Unicode補完計畫”,使其也變成一種人人使用的非官方標準。然而最終的解決方案是放棄Big-5,將網頁或信件直接改用Unicode編碼。
註:但是在原本就只有ANSI的網路環境下──例如Telnet BBS──Unicode補完計畫還是只能當外字集用。
此時使用者可以選擇有內建特殊字碼表的Telnet程式,如PieTTY,即無須安裝“Unicode補完計畫”。
新舊檔名
這是原櫻花輸入法使用者會面臨的問題。
在未安裝“Unicode補完計畫”的電腦,當使用者使用櫻花輸入法為檔案命名時,儲存在電腦內的檔名雖然是 Unicode 編碼,卻是在“Unicode造字區”內的字碼;而補完後的電腦,由於字碼表已被修改,這些檔案名稱在 Unicode 架構的程式的檢視下,就會變成空白;而對於 ANSI 架構的程式(例如 ACDSee、Winamp 等),甚至會變成無法存取的亂碼。這就表示甚至連 ANSI 架構的作業系統(例如整個 Windows 98)都無法存取該檔案。另外還有一個問題:若電腦是未安裝“Unicode補完計畫”的 ANSI 架構作業系統,以上的狀況就會剛好相反(以 Unicode 架構的作業系統則無此問題)。
解決方案:Unicode補完計畫內附一個檔名轉換程式,可以把造字區檔名和 Unicode 檔名互換,但僅能在 Unicode 架構的作業系統下使用;ANSI 架構作業系統的使用者必須要手動改檔名。另一個比較有效率的作法:如果是雙系統的使用者,可以直接在 Unicode 架構的作業系統下使用改檔名程式,讓 ANSI 架構的作業系統使用。
其他問題
Unicode補完計畫會使用到使用者造字區;也就是說如果使用者有自造字,這些字可能會不見。
PS:如果使用者的自有造字放在 Unicode 補完計畫提供的“造字保留區:0xFA40~0xFA63”內的話,則不在此限。
有人表示補完計畫會讓 Internet Explorer 的自動選擇網頁編碼準確度下降,但是無法證實。
在安裝補完計畫後,Microsoft FrontPage 在處理 Big5 編碼網頁時會運作不正常 (包括:存檔會當掉導致檔案大小歸零內容遺失),但是如果 FrontPage 是處理 Unicode 網頁,就能正常運作。
PS:這個問題只有在使用者的 Windows 其“非 Unicode 程式語系”是“正體中文”的情況下才會發生。
對於不是使用系統字碼表的軟體──例如 Mozilla Firefox 等跨平台瀏覽器或 Java 軟體──補完計畫會無效,這些軟體需要“個別補完”(例如有些社群版的 Firefox,就有將補完後的字碼表編譯進去)。
Windows 98 的細明體字形 (mingliu.ttc) 比起 Windows Me / 2000 / XP 的版本來得舊。舊版字形有不少缺字情況;使用者必須在新版 Windows 中,複製細明體去更新 Windows 98 的字形檔案。
Windows 98 / Me 的使用者需要再安裝“中國海字集”,才能正常顯示純文字檔案。
由於 Windows XP Service Pack 2 改進了系統檔案保護的能力,而補完計畫需要變更一個系統檔案,故當出現一個視窗,詢問是否要還原此系統檔案時,使用者必須選擇“不還原”此檔案,才能安裝成功。不屬於Unicode補完計畫但內建其字碼表的軟體 PieTTY: SSH與Telnet客戶端程式。
OpenPCMan: Telnet客戶端程式。
Firefox 2.0版: 網頁瀏覽器。(Big5→Unicode單向使用Unicode補完計畫字碼表。)