天天看點

[轉]linux下檔案編碼格式轉換方法(gb18030/utf-8)

轉自:http://blog.csdn.net/ccf19881030/article/details/17792109

在Linux做開發或者系統管理遇到亂碼是經常的事情,主要windows下中文的預設編碼是bg2312,而 linux下是utf-8。很多時候 涉及到和windows平台系統的通信免不了編碼的轉化,可能大部分人都用iconv庫函數(包含在glib中)和iconv指令來執行編碼轉換,即:

iconv -f gb18030 -t utf-8 file1.txt -o file2.txt

說實話這個指令不好使,一方面容易重複轉換,另一方面不支援通配符,無法成批轉 換,檔案少了還好說,要是一大堆檔案豈不是要累死?

今天我要推薦的是另一個Shell下編碼轉換工具enca。用它不僅可以轉換編碼,還可以檢視檔案的原始編碼,而且還支援成批轉換。使用上也比iconv友善一些。安裝enca很簡單,一般用源安裝就行了,enca用法如下:

enca -L 目前語言  檔案名

enca -L zh_CN file //檢查檔案的編碼

enca -L 目前語言 -x 目标編碼 檔案名

enca -L zh_CN -x UTF-8 file //将檔案編碼轉換為”UTF-8″編碼

enca -L zh_CN -x UTF-8 < file1 > file2 //如果不想覆寫原檔案可以這樣

除了有檢查檔案編碼的功能以外,”enca”還有一個好處就是如果檔案本來就是你要轉換的那種編碼,它不會報錯,還是會print出結果來, 而”iconv”則會報錯。這對于腳本編寫是比較友善的事情。