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

linux下文件编码格式转换方法(gb18030utf-8),第1张

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”则会报错。这对于脚本编写是比较方便的事情。

你可以使用 file 命令,并添加 -i 或 --mime 参数来查看一个文件的字符编码,这个参数可以让程序像下面的例子一样输出字符串的 mime (Multipurpose Internet Mail Extensions) 数据:

$ file -i Car.java

$ file -i CarDriver.java

在 Linux 中查看文件的编码

iconv 工具的使用方法如下:

$ iconv option

$ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile

在这里,-f 或 --from-code 表明了输入编码,而 -t 或 --to-encoding 指定了输出编码。

为了列出所有已有编码的字符集,你可以使用以下命令:

$ iconv -l

列出所有已有编码字符集。下面的命令将会将 ISO-8859-1 编码转换为 UTF-8 编码。

在运行 iconv 命令之后,我们可以像下面这样检查输出文件的内容,和它使用的字符编码。

$ file -i input.file

$ cat input.file

$ iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file

$ cat out.file

$ file -i out.file

在 Linux 中将 ISO-8859-1 转化为 UTF-8

注意:如果输出编码后面添加了 //IGNORE 字符串,那些不能被转换的字符将不会被转换,并且在转换后,程序会显示一条错误信息。

好,如果字符串 //TRANSLIT 被添加到了上面例子中的输出编码之后 (UTF-8//TRANSLIT),待转换的字符会尽量采用形译原则。也就是说,如果某个字符在输出编码方案中不能被表示的话,它将会被替换为一个形状比较相似的字符。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存