做數(shù)據(jù)轉換铆农,遇到一個問題就是程序只處理utf8帶bom格式的文件耽装,需要把GB2312格式的轉碼。
(ps:經理定死了處理文件就是帶BOM的UTF8唇礁,呵呵碎捺。)
一開始打算用java寫個轉換吧路鹰,字符流輸入輸出,貌似還挺麻煩收厨。
String轉換等等晋柱,測試起來也麻煩。
那就放棄吧C泵ァ趣斤!
python
有沒有簡單而不簡約的方法呢俩块,那就直接找linux shell
吧黎休。那就發(fā)現(xiàn)了iconv,問題突然變得好簡單玉凯。
Linux 下的 iconv 命令可以來處理字符編碼的轉換势腮,基本命令格式如下:
iconv -f 原始編碼 -t 目標編碼 文件名 > 新文件名
(-f 代表 from,-t 代表 to)
iconv -l #查看支持的編碼
iconv --help 看下命令幫助
iconv help
假設我要把 GB2312 編碼文件轉換成 UTF-8漫仆, 且保存為捎拯,那么命令如下:
iconv -f GB2312 -t utf-8 textgb2312.txt > text-utf8.txt
----------------------我是分割線--------------------不對稱的分割線--------------------
這個方法轉出來的文件是utf8格式,但是不帶bom 啊盲厌。那么還得轉化一步署照,加上bom:
sed -i '1 s/^/\xef\xbb\xbf&/'
完整的命令我也記錄下:
find ./log/ -type f -name "*utf8*" -print | xargs -i sed -i '1 s/^/\xef\xbb\xbf&/' {}
參考:
http://codingstandards.iteye.com/blog/807077
http://blog.sina.com.cn/s/blog_50ebb8ad0102vkg3.html