linux批量将文件编码由gbk转成utf8

linux批量将文件编码由gbk转成utf8,第1张

一些老的项目,文件编码用的还是gbk,很不利于扩展及维护。经常需要在程序中进行判断及转码,容易出现乱码现象。最好的方式就是将整个项目转成utf-8。那么如何批量将一个目录下的文件转编码?

设置 ~/.vimrc

找出目录下的所有文件类型

转码的脚本

gbk_to_utf8.sh

gbk_utf8.vi

在当前目录下执行转码脚本:

欢迎查看我的网站原文

1、iconv命令来转换文件的编码,格式:

iconv -f 原本的编码格式 -t 要转换成的编码 文件名 -o 新文件名

2、例如:

iconv -f gb2312 -t utf8 a.txt -o utf8.txt

3、vim 文件名.txt

:set fileencoding

:set fenc

查看现在文本的编码

:set fenc=编码

转换当前文本的编码为指定的编码

:set encoding=编码

:set enc=编码

以指定的编码显示文本,但不保存到文件中。

输入 :e ++enc=gbk 强制用gbk打开

输入 :w ++enc=utf8 转换到utf8保存。

4、可以使用 file 命令,并添加 -i 或 --mime 参数来查看一个文件的字符编码

file -i a.txt

linux下文件编码格式转换方法(gb18030/utf-8)

在 Linux 做开发或者系统管理遇到乱码是经常的事情,主要windows下中文的默认编码是bg2312,而 linux下是utf-8。很多时候 涉及到和windows平台系统的通信免不了编码的转化,可能大部分人都用iconv库函数(包含在glib中)和iconv命令来执行编码转换,即:

iconv -f gb18030 -t utf-8 file1.txt -o file2.txt

说实话这个命令不好使,一方面容易重复转换,另一方面不支持通配符,无法成批转 换,文件少了还好说,要是一大堆文件岂不是要累死?

今天我要推荐的是另一个 Shell 下编码转换工具enca。用它不仅可以转换编码,还可以查看文件的原始编码,而且还支持成批转换。使用上也比iconv方便一些。安装enca很简单,一般用源安装就行了,enca用法如下:

enca -L 当前语言 文件名

enca -L zh_CN file //检查文件的编码

enca -L 当前语言 -x 目标编码 文件名

enca -L zh_CN -x UTF-8 file //将文件编码转换为”UTF-8″编码

enca -L zh_CN -x UTF-8 <file1 >file2 //如果不想覆盖原文件可以这样

除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来, 而”iconv”则会报错。这对于脚本编写是比较方便的事情。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11987129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存