轉自: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”則會報錯。這對于腳本編寫是比較友善的事情。