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的编码格式。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
支付宝扫一扫捐赠
支付宝扫一扫捐赠
微信公众号: 共鸣圈
欢迎讨论,邮件: 924948$qq.com 请把$改成@
QQ群:263132197
QQ: 924948