- 论坛徽章:
- 0
|
贡献一个转换脚本
如果你需要在Linux 中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换。
查看文件编码
在Linux中查看文件编码可以通过以下几种方式:
1.在Vim 中可以直接查看文件编码
:set fileencoding
即可显示文件编码格式。
如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/.vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
2. enca (如果你的系统中没有安装这个命令,可以用sudo yum install -y enca 安装 )查看文件编码
$ enca filename
filename: Universal transformation format 8 bits; UTF-8
CRLF line terminators
需要说明一点的是,enca对某些GBK编码的文件识别的不是很好,识别时会出现:
Unrecognized encoding
文件编码转换
1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8
2. enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
enconv -L zh_CN -x UTF-8 filename
3. iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2
以上做为参考资料,下面是我写的一个脚本:
$ cat gbk2utf8.sh
echo "文件批量由GBK转到UTF8“
echo "删除源文件旧的目录"
rm -rf $1 2>/dev/null
echo "删除目标文件旧的目录"
rm -rf utf8 2>/dev/null
echo "复制源文件到本地"
cp -r /media/L_U/site_bak/cnjuju.com/ach_rpt_deve $1
echo "开始文件转换……"
find $1 -type d -exec mkdir -p gbk/{} \;
find $1 -type f -exec iconv -f UTF-8 -t GBK {} -o gbk/{} \;
for FF in `find $1 -type f`
do
Ftyp=`file $FF|awk '{ print $3}'`
if [ "$Ftyp" = "image" ]
then
echo $FF
cp $FF utf8/$FF
fi
done
chown -R shuweich:shuweich * ##此处改为你的主和组即可
$ cat utf82gbk.sh
echo "UTF8 转 GBK"
echo "删除源文件旧的目录"
rm -rf $1 2>/dev/null
echo "删除目标文件旧的目录"
rm -rf gbk 2>/dev/null
echo "复制源文件到本地"
cp -r /media/L_U/site_bak/cnjuju.com/ach_rpt_deve $1
echo "开始文件转换……"
find $1 -type d -exec mkdir -p gbk/{} \;
find $1 -type f -exec iconv -f UTF-8 -t GBK {} -o gbk/{} \;
for FF in `find $1 -type f`
do
Ftyp=`file $FF|awk '{ print $3}'`
if [ "$Ftyp" = "image" ]
then
echo $FF
cp $FF gbk/$FF
fi
done
chown -R shuweich:shuweich * ##此处改为你的主和组即可
(注:以上脚本可以根据需求将iconv改为enconv,如果要先取文件的编码,请加上enca进行分析)
enca 举例:
$ enca acc_tjxsqk.php
Simplified Chinese National Standard; GB2312
CRLF line terminators
-------------------------------------把这个也放一起,省得我到处找--------------------------------------------------
图片批量缩放及加水印的脚本
## 生成水印文件
## convert -size 366x65 -background lightblue -fill blue -strokewidth 2 -stroke blue -undercolor green -gravity center label:"www.ystsp.com" wt.jpg
convert -size 368x65 -background '#a07010' -fill '#d0d0d0' -strokewidth 1 -stroke '#806010' -undercolor '#909090' -gravity center label:"www.ystsp.com" wt.jpg
rm -rf s_* w_*
for IMG in `ls *.JPG`
do
convert -resize 21%x21% $IMG s_$IMG
composite -dissolve 85 -gravity north -geometry +0+238 wt.jpg s_$IMG w_$IMG
done
[ 本帖最后由 shuweich 于 2009-8-9 12:44 编辑 ] |
|