做数据转换,遇到一个问题就是程序只处理utf8带bom格式的文件,需要把GB2312格式的转码。
(ps:经理定死了处理文件就是带BOM的UTF8,呵呵。)
一开始打算用java写个转换吧,字符流输入输出,貌似还挺麻烦。
String转换等等,测试起来也麻烦。
那就放弃吧!!
python
有没有简单而不简约的方法呢,那就直接找linux shell
吧。那就发现了iconv,问题突然变得好简单。
Linux 下的 iconv 命令可以来处理字符编码的转换,基本命令格式如下:
iconv -f 原始编码 -t 目标编码 文件名 > 新文件名
(-f 代表 from,-t 代表 to)
iconv -l #查看支持的编码
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