Linux命令:iconv & enca(文件内容转码的工具)(常用于中文内容转码)
如果你需要在 Linux 中操作 Windows 下的文件,那么你可能会经常遇到文件编码转换的问题。Windows 中默认的文件格式是 GBK(gb2312),而 Linux 一般都是 UTF-8。下面介绍一下,在 Linux 中如何查看文件的编码及如何进行对文件进行编码转换。查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set filee...
·
如果你需要在 Linux
中操作 Windows
下的文件,那么你可能会经常遇到文件编码转换的问题。Windows
中默认的文件格式是 GBK(gb2312)
,而 Linux
一般都是 UTF-8
。下面介绍一下,在 Linux
中如何查看文件的编码及如何进行对文件进行编码转换。
方式一:iconv
查看文件编码
在Linux中查看文件编码可以通过以下几种方式:
1.在Vim中可以直接查看文件编码
:set fileencoding
即可显示文件编码格式。
如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/.vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让 vim
自动识别文件编码(可以自动识别 UTF-8
或者 GBK
编码的文件),其实就是依照 fileencodings
提供的编码列表尝试,如果没有找到合适的编码,就用 latin-1(ASCII)
编码打开。
2. 文件编码转换
- 在Vim中直接进行转换文件编码,比如将一个文件转换成
utf-8
格式
:set fileencoding=utf-8
- iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个 GBK
编码的文件转换成 UTF-8
编码
iconv -f GBK -t UTF-8 file1 -o file2
iconv -f gbk -t utf8 linux常用命令.txt > linux常用命令.txt.utf8
3. 文件编码批量转换
find . -name "*.txt" -exec sh -c "iconv -f GB18030 -t UTF8 {} -o {}" \;
说明:
- 将当前目录及其所有子目录中的以
txt
为后缀的文件,从GB18030
转换为UTF-8
- 注意备份文件,上面的命令有时候执行出错,可能将你的文件毁灭。。。。。
- 第一个
.
表示当前目录,换成你的目录。-o
为输出(经试验发现将-o
换成>
后,不会得到你想要的结果,而是直接将问文件清空了) {}
表示exec
传递过来的参数,即文件名,这样就会覆盖原来的文件,也就是不另行创建新文件- 写成
{}.tx
t的形式,就会创建一个同名但带有.txt
后缀的文件。如:转换前的HelloWorld.txt
将会变为HelloWorld.txt.txt
- 除了用
exec
外还可以用xargs
传递(可以传多个参数) - 后面的
\;
必须加上
方式二:enca(或者 enconv命令,两个都一样)
sudo命令安装
sudo apt-get install enca
源码安装
- 下载地址:http://dl.cihar.com/enca/
- 解压压缩包,阅读README文档(不同版本存在些许差异)
#解压,解压后目录enca-1.15-9-g6705ca9
tar xvf enca-1.15.tar.gz
#进入源码目录
cd enca-1.15
#根据REAMDE说明依次执行如下命令,进行安装
./configure
make
make check
make install
1.使用enca可以直接查看文件编码(enca不能用enconv代替)
enca -L zh_CN file_name
#查看本目录下文件编码格式:
enca -L zh_CN `ls`
2.编码转换为UTF-8
(覆盖原文件)
#将文件编码转换为"UTF-8"编码
enca -L zh_CN -x UTF-8 file_name
enca -L zh_CN -x UTF-8 file1 file2 #如果不想覆盖原文件可以这样
#把文件夹下的所有文件转换为utf8编码,注意:里面不能有嵌套
enca -L zh_CN -x utf-8 *
#或者
enca -L zh_CN -x utf-8 file_name/
3.若要批量转码某个文件夹下后缀名是.txt
的文件(文件夹里有嵌套文件夹)
find file_name/ -name "*.txt" | enca -L zh_CN -x UTF-8
注:以上 enca
命令均可换为 enconv
(除了查看文件编码)。在应用上 enca
比 iconv
更傻瓜,在中文支持上 enca
比 iconv
支持得好,iconv
当遇到不支持的中文时会跳过或者报错 cannot iconving
。所以推荐用 enca
。 enca
还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错。 而 iconv
则会报错。
更多推荐
已为社区贡献3条内容
所有评论(0)