自動目錄
有玩過電腦一段時間的人,都聽過這個人(有一天我才發現7年級的竟然都不認識這個"人")。
在古老的年代,寫程式時最討厭的就是處理「許功蓋」的問題,因為有一些Big5編碼的字,後面那個 byte竟然是 ascii 碼的反斜線 '\',這雖然不值得什麼大驚小怪,但是在程式語言中,那個 "\" 是極重要的脫逸字元(Escape character),會把後面接的那個字元給脫逸掉。例如 明明是寫 "我姓許" 這三個字,轉換成 utf-8 時,就會變成 "我姓許\",莫明奇妙多出一個反斜線,把後面的雙引號 " 給脫逸掉了,當然,程式執行到這一定是錯。
這種痛苦的經驗非常多,例如網頁的表單,以前還採用 big5 的編碼時,如果使用者要修改表單,一般的做法會把原來的值寫為 text中,慘的就是如果好死不死使用者填的最後一個字是「許功蓋」這種匪類,就會把 value 值的右引號給脫逸,造成亂碼或是破碎的表單。還有中文檔案上傳到ftp,遇到教"育"的育字、午"餐"的餐字,看到的可能就是"灶" 和另一個奇怪的字,有時還會有下載不回來的冏境。還有php 的函數 strip_slashes 把 \ 脫掉的函數,竟然會把許功蓋這些匪類給脫了(strip) 只能說一個慘字。
真的要抱怨會寫不完,所以解決 big5 的最好方法,就是不要再用 big5。
以下文章節錄自網管很忙 url http://203.64.20.7/lifetype126/index.php?op=ViewArticle&articleId=15&blogId=1
許功蓋是何許人? 令人頭疼的傢伙
有人說中國人像一盤散沙,不但不團結又愛搞分化,無論在學校、公司、部隊或社會,小圈圈或小山頭林立,想要中立者很難不被人貼上標籤,一旦被歸類到哪 個派系時禍福難料。台海兩岸不就是最明顯的例子,上一代的鬥爭,下一代繼續鬥,非要弄得大家頭破血流為止。
大名鼎鼎的許功蓋
無論是許功蓋或是許蓋功其實只是本尊與分身的差別不同,意思是在電腦世界裡都代表一個相同問題,我想只要曾經用過"PHP+MySQL"架站過的人, 幾乎是無人不知無人不曉這頭疼的傢伙,且絕對是這些架站人心中永遠的痛。仔細探究原因,你會發現,錯的人其實不該是許功蓋,而是通稱大五碼的BIG5碼, 關於大五碼的歷史傳說眾說紛紜,無一定論。我們並不評論當初編碼的對錯與是非,對這歷史有興趣的讀者不妨到google搜尋"BIG5″,相信可以找到一 堆資料。
既然大五碼聽來似乎有些問題,為何目前幾乎所有的繁體中文卻又都採用此一編碼呢?在西元1983-1984年間,個人電腦正在台灣逐漸推廣,電腦上的 套裝軟體也開始盛行,為了解決電腦處理中文的問題,因而制定一套中文內碼,也就是我們通稱的"BIG5碼",又稱大五碼。而經歷過這段時間的人,一定不會 忘記當初倚天中文的行銷手法,在國外軟體廠商開始引進原版軟體觀念的當時,倚天中文卻反其道而行,允許校園甚至一般使用者無條件且免費複製其中文系統,因 此,讓倚天中文在當時幾乎成為中文的標準,也由於倚天中文正是採用BIG5編碼,嚴格說來,也就是BIG5碼為何一直沿用到現今的主要原因了。
BIG5不只找php麻煩,連UNIX都難倖免於難
7C 是 ASCII 裡的 pipe ‘|’ 用過 UNIX的人應該知道它是作什麼的,舉一個簡單的例子,如果你用 FTP 上傳一個 “四.doc” 的檔名到 UNIX 作業系統 ,傳完後立刻變成 “北.doc’,我想有太多人碰過這種經驗,原因無他,中文字 “四” 的 BIG5 碼是"A57C",當 UNIX 看到 7C 時會覺得莫名其妙,上傳一個 “|” 給我做什麼?於是就自己處理掉了…
熊大:口好渴!人呢?
單位同事瑩光說,他在處理資料庫轉碼時( big5 ==> utf-8) 發現「許功蓋」在轉完會讓人很冏,本來要寫一個程式特別去判斷後再轉,但是後來他發現那樣子效率太差,所以直接用取代的就好,反正許功蓋的字約 70 個,常用的不到10個,只要處理會影響的許功蓋系列35字就好了。
BIG5碼中容易衝碼的文字
常見字用彩色標註
最常見字:功餐許蓋閱
次常見字:擺珮豹枯淚穀愧
其他字就見招拆招吧,有時一篇10萬字的書大概也不見得會出現。
(請注意看你的內文是否用到了下列的字:)
ASCII(5C) == “\”
A45C么 AE5C娉 B85C稞 C25C擺 A55C功 AF5C珮 B95C鈾 C35C黠 A65C吒 B05C豹
BA5C暝 C45C孀 A75C吭 B15C崤 BB5C蓋 C55C髏 A85C沔 B25C淚 BC5C墦 C65C躡
A95C坼 B35C許 BD5C穀 AA5C歿 B45C廄 BE5C閱 AB5C俞 B55C琵 BF5C璞 AC5C枯
B65C跚 C05C餐 AD5C苒 B75C愧 C15C縷
ASCII(7C) == “|”
AA7C泜 B47C揉 A87C育 BE7C魯 B27C琍 BC7C慝 C67C鸛 A97C尚 B37C逖 BD7C罵
A77C坑 B17C悴 BB7C誡 C57C疊 A67C帆 B07C院 BA7C漏 C47C辮 AB7C咽 B57C稅
BF7C糕 AC7C洱 B67C閏 C07C嚐 AD7C迢 B77C會 C17C舉 A47C弋 AE7C徑 B87C腮
C27C甕 A57C四 AF7C砝 B97C頌 C37C牘
原文 2010-04-26 22:09:34