close

現場(環境): CentOS 6 套件:fileiconv

 

問題:

 

今天透過系統產出資料到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

 

<本篇完>

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 IT001 的頭像
    IT001

    IT001

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