日期:2014-05-16  浏览次数:20624 次

linux 查看文件编码
http://www.xiaojb.com/archives/it/convert-gbk-utf-8.shtml

http://space.itpub.net/10768286/viewspace-536375

http://www.cnblogs.com/cocowool/archive/2009/04/25/1443529.html

引用以上几篇文章的内容。

linux下主要是使用iconv和enca,其中enca需要自己装,以下是网址
http://freshmeat.net/projects/enca/
linux里面转换编码的方法很多,google了一下,一般的人都是用”iconv”命令来进行转换。但是由于我需要在脚本里面判断文件的编码,”iconv”就不太适用。其实Linux里面还有另一个能进行编码转换,并比”iconv”功能强大的”enca”。
使用方法:
enca -L zh_CN file 检查文件的编码
enca -L zh_CN -x UTF-8 file 将文件编码转换为"UTF-8"编码
enca -L zh_CN -x UTF-8 < file1 > file2 如果不想覆盖原文件可以这样
除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来,而”iconv”则会报错。这对于脚本编写是比较方便的事情。



2. iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2


以上为引用
===============================
以下为自己写滴

根据引用文章的内容,直接使用enca,效果还不错。

另外,php也可以的,使用mb系列函数,其中一个函数mb_detect能够检测不同文件的编码是什么。但是既然有现成的linux命令,就直接用linux了。

批量处理

如果只想查看
find /home/utf/ -name *.txt|xargs enca -L zh_CN


如果想批量转换成UTF-8,不管原先是神马

首先,把/home/doc/下的txt全部拷贝到另一个文件夹/home/utf/下,
使用了/home/script/cp.php,在附件
find /home/doc/ -name *.txt|xargs php /home/script/cp.php /home/utf/


然后,
find /home/utf/ -name *.txt|xargs enca -L zh_CN -x UTF-8


如果愿意,可以查看
find /home/utf/ -name *.txt|xargs enca -L zh_CN|grep GB

应该没有显示。

如果愿意,可以再统统换成unix换行符
find /home/utf/ -name *.txt|xargs dos2unix



========================================

以动手实践为荣 , 以只看不练为耻; 
以打印日志为荣 , 以单步跟踪为耻; 
以空格缩进为荣 , 以制表缩进为耻; 
以单元测试为荣 , 以人工测试为耻; 

以模块复用为荣 , 以复制粘贴为耻; 
以多态应用为荣 , 以分支判断为耻; 
以Pythonic为荣 , 以冗余拖沓为耻; 
以总结分享为荣 , 以X求其解为耻;