現場(環境): CentOS 6 套件:file、iconv
問題:
今天透過系統產出資料到Linux系統當中,
結果發現打開檔案時是亂碼。
這個狀況之下,這個資料根本就沒有辦法做使用。
處理方式:
Step1. 先確認這個檔案道理
範例:file -i [檔案名稱]
這邊示範的檔案名稱是Data。
#file -i Data
發現到這邊的charset=iso-8859-1 。
這個編碼是MS950,也就是Windows在使用的編碼格式。
Linux原生不支援這個編碼。當然會出現亂碼的問題。
Step 2. 轉碼
知道是編碼問題後就比較簡單了。
我們只要在Linux內將它專換編碼就好。
套件使用iconv。
說明:
-f 之後帶要轉碼的檔案的原始編碼。
-t 轉碼之後的編碼
-o 表示檔案輸出後的名稱
#iconv -f ISO-8859-1 -t UTF-8//TRANSLIT Data -o Data_UTF8
之後再使用file 確認。
#file -i Data_UTF8
確認檔案已經轉成utf8編碼了。
接著我們就來看看轉換的成果!!
結果發現一樣是亂碼!!!
Step 3. 排除錯誤
先查詢iconv能支援哪些編碼的轉碼。
#iconv -l
支援的編碼格式相當豐富。
這其中看到BIG5,想說乾脆來測試看看。
所以這次來源使用BIG5轉換成UTF8測試看看。
#iconv -f BIG5 -t UTF-8//TRANSLIT Data -o Data_From_BIG5
確認檔案編碼
再來看一次是否還是亂碼。
發現恢復成正常的中文!!
這樣就算是完成編碼的轉換作業了。
------
這邊想分享的是編碼若為 MS950的檔案
建議一樣先使用ISO-8859-1進行轉換測試,
當不行的時候再嘗試看看其他的編碼格式,如BIG5。
<本篇完>
留言列表