Windows用戶在使用Excel處理數據文件時都不會關心文件的編碼,因為Excel支持Windows上默認使用的簡體中文編碼GB2312。但是,使用MAC的用戶就沒有那么省心了,一不小心就會碰到中文亂碼的問題。
在Mac上的Excel中為什么會出現中文亂碼的情況呢?這是就需要了解一些文件編碼的背景知識。
文件在計算內部采用的是二進制(0和1)的形式存放,那么給定一個0和1組成的串,計算機怎么知道這個串代表的是英文中的’a’還是中文里面的’好’?這時就需要用到文件的編碼,不同的編碼告訴了計算機怎么去識別文件的內容,例如GB2312編碼告訴計算機’001’代表的是中文里面的’好’,而UTF8編碼告訴計算機’001’代表的是英文里面的’a’(這個例子只是為了簡述文件編碼的作用,實際上的編碼比這個復雜得多)。
由于UTF-8編碼同時支持中文、還是日文、韓文、阿拉伯文在類的各種語言,所以它在Mac中被廣泛使用,而目前Mac上的Excel在導入CSV文件時雖然給出了UTF8的選項,但是導入以后的中文還是亂碼,這是因為它實際上是不支持UTF8編碼方式導致的,至少對于Excel 2011 for Mac是這樣。
那么怎么解決這個問題呢,方法很簡單:將文件的編碼方式由UTF8轉為Excel支持的中文編碼方式,Mac上的iconv工具專門就可以用來干這個事情。例如,在Excel給出的中文編碼方式中有GB18030,那么我們可以通過Mac上的iconv工具將文件編碼由UTF8轉為GB18030。只需要在命令行中鍵入如下的命令:
iconv -f UTF8 -t GB18030 源文件.csv >新文件.csv
就可以將“源文件.csv”文件的編碼方式由UTF8 變為GB18030并寫入到“新文件.csv”文件中,在Excel中導入“新文件.csv”文件中的內容,我們會發現煩人的中文亂碼消失的無影無蹤了!
差點忘了最重要的一個問題,使用iconv的前提是我們知道文件的編碼,那么Mac上怎么知道文件的編碼呢?其實很容易啦,首先用Mac自帶的編輯器vim打開文件,然后使用命令
:setfileencoding
vim就會在屏幕的下方顯示文件的編碼。