ISO 8859(GBK) 編碼檔案轉碼到UTF-8編碼檔案
問題產生:
現需要把一個在windows的Myeclipse下開發的小程式,轉到Linux系統下去安裝執行,結果程式中的.java檔案中的中文到Linux下vim顯示全是亂碼。
現做以下分析:其主要原因是windows中Myeclipse中預設的檔案編碼格式為GBK或GB2312格式,而Linux系統預設的檔案格式是UTF-8, 這樣在windows下GBK格式的中文,到Linux下vim檢視中文全部顯示亂碼,英文正常。
解決辦法:
1. 修改vim配置檔案,使得用vim可以正常檢視檔案中的中文字元,但是此法並沒有改變原始檔的編碼格式
具體方法:找到linux系統下的vimrc檔案(目錄/usr/share/vim/vimrc)用root許可權開啟並在檔案末尾新增下面四行程式碼:
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc
再用vim開啟,就可以正常顯示亂碼的檔案了。(記住但並未改變原始檔的編碼格式,只是vim讀檔案時自己完成了轉碼) 2. 改變windows下的原始碼檔案的編碼格式為Linux下編碼格式
先說下檢視檔案編碼格式的命令:
(1)用vim開啟檔案的話可以輸入 :set fileencoding 回車檢視
(2)用命令 file 檔名 例如 file a.txt 檢視a.txt 的檔案編碼格式
然後就是具體的轉碼操作:
Linux可以用iconv命令進行文件的轉碼操作,具體命令格式:
iconv -f GBK -t UTF-8 待轉碼檔名 -o 輸出檔名
解釋下此命令,其中 -f 接的是代轉檔案編碼格式(即被轉碼格式) -t 接的是目標檔案編碼格式(即目標編碼格式)
-o 表示輸出。上面完成了 將待轉碼檔案(GBK編碼格式) 轉換成 輸出檔案(UTF-8編碼格式) ,也就是完成了從GBK到UTF-8的轉換。(提示:要想轉碼後不產生新檔案,把代轉檔名和輸出檔名寫成同一個就行了)
舉例:iconv -f ISO-8859 -t UTF-8 zhuan.java -o zhuan.java