close

淺談檔案編碼問題(一)

筆 者在工作上經常遇到資料整合的問題,而處理資料整合時經常遇到的就是來自不同資料源的檔案,他們的檔案內容編碼格式經常發生不同的情況,不諱言的在此情形 下資料整合端必須要求資料源端依照我們所共同協定好的編碼格式來上傳檔案以利我們處理,不過難免會遇到絆腳石,他們通常會更強硬的說主機匯出檔案要處理成 其他的編碼格式很麻煩等等的理由,當然我們有時還是得摸摸鼻子為了處理那幾KB的檔案內容去寫一些小程式,將這些程式當作中介層來處理這些資料源了。

 

當然要處理檔案內容的編碼,我們應該要先目前在計算機世界裡的一些標準及編碼規則,筆者花了一些時間整理了主要的觀念的RoadMap,相信這對資料處理會有很大的幫助的。

 
1.      字元與字元集-字元(Character)是人類文字在計算機世界中最基本單位,而字元集便是如部分或全部英文字元所組成的集合。

2.      何謂編碼-事出必有因,會有編碼的產生要從計算機所能處理的資料來瞭 解。計算機處理的都是二進位碼0與1(位元),因此人類的文字在輸入計算機時,勢必要將文字轉換成計算機可以解讀的資料如1000001,轉換讓計算機處理完後當然他也要負責將資訊顯示給人類可以閱讀的文字(圖形字元),所以我們必須給計算機一些對照表來做這些轉換,對照表的編排方式可以說所謂編碼了。通常這些編碼存放在計算機的記憶體內讓他能夠隨時做轉換。

3.      位元組的產生-早期計算機的記憶體非常昂貴,因此都儘量將人類所用的字元集簡化,如英文字26個(大寫)、阿拉伯數字10個及一些重要的符號,因此只需2的6次方(64)個位元000000~111111(63)也就是64種排列組合便可表示這些字元,後來因為各家廠商的編碼均未統一,美國圖書館界需要將書目系統的資料作交換,而原本的6位元編碼不敷使用,因此衍生了7位元的編碼,後來變為美國國家標準局的ASCII CODE更演進為國際標準ISO/IEC 646。隨後因為網路傳輸的需求而且記憶體價格逐漸降低,因此又產生了八位元的編碼方式,也就是原來的ASCII再加上1的位元的檢查碼以確保資料傳輸時的正確性。八位元的編碼變的普遍且大家都認同後,逐漸的八個位元被稱作是一個『位元組』。

4.      位元組與編碼-

A.單位元組編碼-ASCII(7位元)、延伸ASCII(8位元)。

B. 多位元組延伸編碼-ISO/IEC 2022字元碼、ISO/IEC 2022字元碼延伸碼。

C. 多位元組內碼編碼-EUC(Extended UNIX Code)。

5.      Universal Multiple-Octet Coded Character Set(UCS - 4),其編號為ISO/IEC 10646,是用四個八位元組成。

6.      1988年美國Xerox公司的Joe Becker提倡,將字元集編碼擴充到16位元來容納世界所有的語言的字元及符號,並衍生了(UCS - 2),這種編碼方式後被稱為『Unicode』。

7.      UTF(UCS or Unicode Transformation Format)-UTF-16意即把原為32位元的UCS-4字元碼轉換為兩或多個16位元的UCS-2字元碼。

8.      UTF-8-將原來的32位元的UCS-4字元碼或原為16位元的UCS-2字元碼轉換為多個八位元的位元組。


來源:http://www.dotblogs.com.tw/jameswu/archive/2008/04/22/3062.aspx

arrow
arrow
    全站熱搜

    sleepingwolf 發表在 痞客邦 留言(0) 人氣()