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

同样使用linux下的identify命令:

  identify ABCD.png

输出: ABCD.png PNG 339x362 339x362+0+0 8-bit DirectClass 76.2kb

说明:图片ABCD.png的格式为PNG,宽、高分别为339和362,位深度8-bit,大小76.2kb;下文主要涉及宽、高的信息。

设置高度限制为60, 宽高比例不变,使用convert的 -resize 参数

convert ABCD.png -resize x60 ABCD_t1.png

查看压缩后的图片:

 ABCD_t1.png PNG 56x60 56x60+0+0 8-bit DirectClass 4.7kb

借助convert的 -crop 参数

convert 输入.png  -crop  w x h + dx + dy   输出.png

其中: w为截取的宽;h为截取的高;dx、dy分别是开始截取的偏移位置,以左上角为原点

例如: convert ABCD.png -crop 300 x 200 + 10 + 10   ABCD_t2.png

可见,截图是自上而下、自左向右的;宽度(稍微截了一点)和高度(明显截短)(原图: 339x362 )均进行了截取,如下图:

(1)横向拼接

 convert  1.png   2.png  n.png +append   merge.png (支持多个)

例如:把ABCD.png 和 ABCD_t2.png拼接起来

(2)纵向拼接

convert  1.png  2.png  n.png -append   merge.jpg

把ABCD.png 和 ABCD_t3.png进行纵向拼接起来

convert ABCD.png -fill red -pointsize 20 -annotate +150+120  HELLO  text.png

在原图片上150x120位置上添加大小为20的红色文字:HELLO

可以在PNG、PDF、JPG、TIFF等众多格式见相互转换

例如: convert ABCD.png  ABCD.pdf

批量转换:for file in *.pngdo convert $file ${file%%.*}.jpgdone

[1] http://www.imagemagick.com.cn/

[2] http://www.imagemagick.org/script/index.php

常见的比如在Visual Studio 中写的C\C++程序需要放到Linux主机上编译,而程序的中文注释则显示为乱码,比较严重的是由于编码原因,linux上的编译器报错。

1、用VIM查看文件编码

在Vim 中可以直接查看文件编码

:set fileencoding

即可显示文件编码格式。

2、 改写~/.vimrc 文件 如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在

~/.vimrc 文件中添加以下内容:

set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。

3、 用ICONV文件编码转换

我们利用iconv工具对文件的编码进行转换。

iconv 转换,iconv的命令格式如下:

iconv -f encoding -t encoding inputfile

比如将一个GBK 编码的文件转换成UTF-8编码

iconv -f GBK -t UTF-8 file1 -o file2

其中的参数的意义表示

-f From 某个编码


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

原文地址: http://outofmemory.cn/yw/8895288.html

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

发表评论

登录后才能评论

评论列表(0条)

保存