[轉貼]BIG5碼衝碼的原因
標題: [文件]BIG5 沖碼的原因
時間: Thu Feb 21 13:30:09 2002 BIG5 沖碼的原因 作者:迪倫轉貼 日期:2001/5/20 PM 03:04:27 這篇文章分析一些BIG5漢字用在文件名上出錯的原因,其原理也適用於程序代碼, 轉貼過來供參考: 哪些中文字不能在 Unix 檔名上使用? 中文檔名上傳後 crazy !! 您有過這種經驗嗎?打好了一個名為「開會資料.doc」的文件,或者是網頁「基金 會簡介.htm」,傳到 FTP 上或網頁空間上時,居然變成了「開愷資料.doc」或「 基金愷簡介.htm」??尤其當 FTP 或網頁空間是 Unix/Linux 主機時。 是的,這是 Unix 沒有考慮中文的問題。不過這樣說並不見得正確和公允。 是誰的問題?! 嚴格公允地說來,應該是「Big 碼」在設計之初,沒有考慮到 Unix 的需要和限制。 更嚴厲一點地說,真要追究責任,應該是「 Big5 碼」的設計者,根本沒有用過Unix 或者不把 Unix 放進眼睛裡,所設計出來的一種嚴重漏洞的中文編碼方式! 特指「Big5 碼」的原因,是因為其他的中文內碼並不見得都會發生這種狀況。也不 是「 Unix 不能容納中文」的問題。Unix 不能容納中文的話,那麼「開」「資」 「料」三個字,為什麼能正常使用? 當然,也有人會說,Unix 既然能容納「開」「資」「料」三個字,而不能順利處理 「會」字,那麼應該是 Unix 要修正,不是中文要修正,或者說中文內碼編錯吧? 這樣說,只能說有 10% 有道理。90% 沒道理的原因,是因為民主時代,如果分不出對錯,就以人數多為準。Big5 內碼使用人數雖多,也是後來的事了,而且人數再多,也沒有使用 Unix 的人多。中文內碼也很多種,並不止 Big5 一種。使用 Unix 的國家很多很多,使用英語的國家很多很多;而使用中文而且使用 Big5 內碼的國家,只有台灣和香港。 如果您「勉強同意」(民主就是比人數多,您的意見和大多數不一樣,您也只能「勉強」同意)上述的觀點。那麼我們下面把 Big5 碼與 Unix 衝突的問題,視為 Big5碼「錯誤」的敘述,您就不會太反應強烈了(拜託!別又寫長篇大論來吵這個問題!我們窮於應付。有興趣請自闢 BBS 討論板開火) Big5 碼錯在哪裡? Big 碼錯就錯在,把 0x7C 編到了中文兩 Bytes 的內碼裡面。這個是什麼呢?就是您所熟悉的 Unix / Linux 用做管道(pipe) 的「|」直棒字元。「會」字正夾了一個這個字元在第二個 byte 處。Unix 明明應該收到的是文字,卻莫名其妙來了一個管道符號,以為是什麼管道指令,當然處理時會出錯囉,不止在 FTP 上傳的問題而已! 其實不止含有「會」一個字的檔名會出問題而已吧?如果您的檔案名是「第四次會議記錄.doc」,那麼鐵定也會變成「第北次愷議記錄」! 到底有哪些字有類似情形呢? 到底有哪些字也會這樣出錯呢?我們台灣立尼仕一不做二不休,乾脆把所有的字來個戶口大清查,凡是私藏有 0x7C 字元的,全部列出來示眾! 以下這些字就是無法用在 Unix/Linux 檔名上的 Big5 中文字黑名單,以及他們會化身喬裝出現的名字! 「弋」→「于」 「四」→「北」 「帆」→「囝」 「坑」→「否」 「育」→「灶」 「尚」→「奇」 「泜」→「泣」 「咽」→「冒」 「洱」→「柯」 「迢」→「茁」 「徑」→「宰」 「砝」→「珞」 「院」→「起」 「悴」→「巢」 「琍」→「淪」 「逖」→「訛」 「揉」→「復」 「稅」→「琯」 「閏」→「跛」 「會」→「愷」 「腮」→「筷」 「頌」→「鉤」 「漏」→「榕」 「誡」→「蓓」 「慝」→「嫻」 「罵」→「稻」 「魯」→「震」 「糕」→「甍」 「嚐」→「餛」 「舉」→「縫」 「甕」→「斷」 「牘」→「儳」 「辮」→「寶」 「疊」→「鰭」 「鸛」→「鑰」 「戉」→「殳」 「吜」→「佤」 「芎」→「灺」 「怙」→「岯」 「矹」→「狉」 「峗」→「壴」 「洀」→「柉」 「苶」→「胙」 「恝」→「娕」 「烡」→「浨」 「茦」→「罝」 「唰」→「偫」 「掤」→「惛」 「痎」→「牿」 「虖」→「莤」 「圌」→「傇」 「斮」→「揕」 「琰」→「焥」 「萆」→「萣」 「隇」→「酟」 「搉」→「廆」 「煟」→「溒」 「腶」→「絻」 「輋」→「趌」 「嫟」→「塺」 「漒」→「槂」 「翣」→「粿」 「銔」→「踆」 「憰」→「嬅」 「獡」→「潷」 「蔙」→「蓲」 「鋧」→「醂」 「懁」→「嶱」 「瞣」→「獥」 「褟」→「螒」 「鮐」→「餩」 「瞲」→「燲」 「觲」→「螵」 「鴱」→「駻」 「聵」→「禬」 「鞫」→「鎕」 「矱」→「瀖」 「霬」→「醭」 「礨」→「瀴」 「鶘」→「騶」 「驂」→「鐻」 「驏」→「躚」 「鼶」→「鱌」 「鸓」→「鸐」 您可以看到「育」「院」「稅」「會」「舉」等常用字,都赫然在其中之列! 因此,如果您是在「教育部」、「立法院」、「稅捐處」、「國稅局」、「農委會」、「選舉委員會」等單位工作,而貴單位又買的是 Unix 主機,那麼您的檔案名稱最好不要用中文了。「中研院院士」,會變成「中研起起士」;「教育部第四次會議記錄」,會變成「教灶部第北次愷議記錄」的! 勉強解決的辦法(在 Unix 沒有通令全世界不要再用管道符號之前,或者在 Big5 碼把上述這些字的內碼修改之前,但這都是不太可能的),只好用「台北市電腦公會.doc」這樣的笨拙檔名來應付。 其他還有一群字也有問題! 另外還有一群字,是當初 Big5 編碼時含有 0x5C 字元,也就是含有 \ 這個反斜線,凡是設計過 C 程式的人大概都知道,"功能表" 要寫成 "功\能表" 才行。這是國外的C 語言教科書上都沒有提到的。 檔名中含有這個字元的檔案,會根本傳不上 FTP 。也不會有亂碼。您只會覺得奇怪,為什麼傳上去的檔案總是少了一兩個!? 同樣不幸的字還包括了「許」,含有您「許」字的檔案是上不了 Unix 主機的。同樣還有姓氏「俞」,名字常用字「珮」,以及較少見的姓氏「涂」和「蓋」等等。「餐」廳也不能用。以下依內碼順序全部列出來: 「么」 「功」 「吒」 「吭」 「沔」 「坼」 「歿」 「俞」 「枯」 「苒」 「娉」 「珮」 「豹」 「崤」 「淚」 「許」 「廄」 「琵」 「跚」 「愧」 「稞」 「鈾」 「暝」 「蓋」 「墦」 「穀」 「閱」 「璞」 「餐」 「縷」 「擺」 「黠」 「孀」 「髏」 「躡」 「尐」 「佢」 「汻」 「岤」 「狖」 「垥」 「柦」 「胐」 「娖」 「涂」 「罡」 「偅」 「惝」 「牾」 「莍」 「傜」 「揊」 「焮」 「茻」 「鄃」 「幋」 「滜」 「綅」 「赨」 「塿」 「槙」 「箤」 「踊」 「嫹」 「潿」 「蔌」 「醆」 「嬞」 「獦」 「螏」 「餤」 「燡」 「螰」 「駹」 「礒」 「鎪」 「瀙」 「酀」 「瀵」 「騱」 「酅」 「贕」 「鱋」 「鱭」 其實這也沒什麼困難嘛?了不起我再把檔名改為「許大雄」就好了嘛,反正姓「許」的只有這一種許嘛? 麻煩事還沒完。 以「功」字而言,如果您的檔名「新產品功能說明」改為「新產品功能說明」,會怎麼樣?不會怎麼樣。上傳到 FTP 以後會怎麼樣? 您自己試試看吧! 眉批:難怪市面上會有一整本批評 Big5 碼的專書!(黃大一博士著,「中文字碼」,長松文化出版) (註:以上著作權屬於台灣立尼仕所有,如欲轉載、節錄,請註明出處,最好 能事先 Email 知會,謝謝!) |
所有時間均為台北時間。現在的時間是 14:12。 |
Powered by vBulletin® 版本 3.8.3
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.
本網站內之文章,版權歸原作者所有,在此發言並無言論免責權,且與本站立場無關,並禁止未授權轉載。