2010年1月23日 星期六

EXCEL讀取特定編碼的CSV會變亂碼

最近剛好用EXCEL打開一個CSV檔時,發現中文字竟變成亂碼,可是用記事本打開是正常的,覺得很怪,於是上網搜尋了一下相關資訊,好像是檔案編碼不同造成的,EXCEL似乎只支援ANSI(BIG5)格式的CSV檔,Unicode的會有問題,於是自己測試了一下各個編碼的差異

整理如下圖

首先我用記事本將文,巛,test存成3個不同編碼的CSV,3個分別是ANSI、UTF8及UNICODE,怎麼用記事本存成不同編碼的呢?就另存新檔時選不同的編碼儲存就好

因為中間的"巛"算是Unicode字元,所以另存成ANSI時,就會跟你說有字元會遺失,所以就變成問號了,這是正常的

用EXCEL開啟3個不同編碼的CSV時,可以發現EXCEL是真的支援ANSI編碼的,可以正常顯示,與記事本無異,又能自動幫你分割好3欄位;Unicode則無法幫你自動分割欄位;UTF8則中文直接變成亂碼囉,欄位分割也不準,應該是3欄才對
 
看到這裡,如果要能正確的用EXCEL開啟CSV,檔案編碼應該要為ANSI才對, 如果不用EXCEL開的話,當純文字檔看待那用什編碼差別應該不大吧,除非用程式讀取可能要注意一下編碼囉
 
順便一提,滿多文字編輯器都可以直接看檔案編碼為何?像UltraEdit,EmEdit及Notepad ++,當開啟檔案後都可在下方的狀態列看出是什編碼,這邊特別推薦Notepad ++,因為是免費的,還可很方便的幫你互轉換編碼,裡面的UCS-2 little endian指的就是Unicode的喔

0 意見:

張貼留言