2013年9月1日 星期日
轉換 BIG5 文字檔到 UTF8
今天早上把一些檔案整理了一下,發現有一些是早期寫的文章,那時候 UTF8 還沒有那麼直覺,所以編碼直接就用 BIG5。
到了現在,檔案的溝通大部分都是以 UTF-8 作為編碼格式,這時候就會發現,要統一做一些處理有點困難,所以得想一個辦法把檔案從 BIG5 轉成 UTF-8。
稍微 Google 了一下,才想起以前就用過的 iconv 大法,順手寫了一個小 Script 來進行文字檔轉換,想說也許會有人有需要,就記錄在這邊。
首先呢,你需要一台 Linux,不管是實體機器還是 Virtual Machine 都可以,因為底下寫的東西是靠 Linux 上面的命命來完成,包括 Script 都是,所以如果您現在沒有,那要不就是找一台 Linux 來用,要不,就按上一頁離開吧,免得失望。
主要我們要用的指令,是 iconv 這個命令。
根據 Linux 上面的好朋友「男人」所表示的,這個命令主要需要三個參數,一個是你輸入的編碼格式,一個是你要輸出的編碼格式,最後就是你要處理的檔案。
預設是會輸出到螢幕上,如果想要指定輸出的檔案,就加一個輸出的參數。
所以整段指令會是:
iconv -f BIG5 -t UTF8 [inputfile.txt] -o [outputfile.txt]
表示我們要從 BIG5 編碼轉換到 UTF8 編碼,來源檔案是 inputflie.txt,結果會輸出到 outputflie.txt。
然後因為要自己一個一個打檔案名稱太麻煩,所以直接使用 ls + awk 幫我們把檔名撈出來。
ls -l *.txt | awk '{print $9}' > allfile.lst
就可以把所有的 txt 檔案的檔名撈到 allfile.lst 這個檔案裏面,我們再針對這個檔案做讀取動作去抓到每個文字檔的檔名,套用上面的操作即可。
整個 script 如下:
#!/bin/bash
FILELIST=allfile.lst
TMPFILE=conv.tmp
ls -l *.txt | awk '{print $9}' > $FILELIST
for f in `cat $FILELIST`
do
echo "------> converting $f"
iconv -f BIG5 -t UTF8 $f -o $TMPFILE
if [ $? -eq 0 ]; then
cp -a $TMPFILE $f
echo "... $f converted"
else
echo "Converting Error! No file copied!"
fi
done
echo "All files were converted!"
有興趣的人就自行取用吧。
事實證明,懂一點 Linux + Shell Script 可以省下不少時間的。 :)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言