如果你需要在 Linux
中操作 Windows
下的文件,那么你可能会经常遇到文件编码转换的问题。Windows
中默认的文件格式是 GBK(gb2312)
,而 Linux
一般都是 UTF-8
。下面介绍一下,在 Linux
中如何查看文件的编码及如何进行对文件进行编码转换。
在Linux中查看文件编码可以通过以下几种方式:
:set fileencoding
即可显示文件编码格式。
如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/.vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让 vim
自动识别文件编码(可以自动识别 UTF-8
或者 GBK
编码的文件),其实就是依照 fileencodings
提供的编码列表尝试,如果没有找到合适的编码,就用 latin-1(ASCII)
编码打开。
utf-8
格式:set fileencoding=utf-8
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
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
传递(可以传多个参数)\;
必须加上sudo命令安装
sudo apt-get install enca
源码安装
#解压,解压后目录enca-1.15-9-g6705ca9
tar xvf enca-1.15.tar.gz
#进入源码目录
cd enca-1.15
#根据REAMDE说明依次执行如下命令,进行安装
./configure
make
make check
make install
enca -L zh_CN file_name
#查看本目录下文件编码格式:
enca -L zh_CN `ls`
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/
.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
则会报错。