linux下改变文件的字符编码

首先确定文件的原始字符编码:

$ file -bi test.txt

然后用 iconv 转换字符编码

$ iconv -f from-encoding -t to-encoding file > new-file

如果上面的步骤更改不成功,可以使用 vim 来更改文件的字符编码

先打开文件,然后设置文件的字符编码,在命令模式使用

set encoding=utf-8
set fileencoding=utf-8              (会改变正在编辑的文件的字符编码,千万别保存,一定要另存为, vim 的另存格式为 :w  new-file)

 

 

 

对于windows的编码,很多时候现实iso-8859,其实转码的时候应该使用 cp936:

iconv -f cp936 file_name -t UTF-8 -o file_name

对于多个文件,可以使用下面的命令来批量转:

find . -iname "*.h" | xargs -i sh -c "iconv -f cp936 {} -t UTF-8 -o {}"

查看有哪些文件是iso编码:

find . -iname "*" | xargs file | ack -i iso

 

以上是文件内容的转码,文件名的转码可以使用 convmv 这个工具,一般linux的中文文件名(采用utf8)可以在windows下正确的识别,因此只需要将windows的文件名在linux下转换出来。

如果是在windows下zip过的文件,用unzip解压后出现乱码,则可以使用 unzip -O GB18030 gb18030_zipped_file.zip -d target_dir 或 unzip -O cp936  gb18030_zipped_file.zip -d target_dir 试试,一般需要先知道windows的编码格式。

posted @ 2014-02-19 00:05  微信公众号--共鸣圈  阅读(438)  评论(0编辑  收藏  举报