分页: 1 / 1

关于批量转换编码问题

发表于 : 2009-08-02 10:53
jiefey
:em03
我在ubuntu里安装了lamp,然后把我以前在windows里作的php程序放在ubuntu里运行,产生了很多乱马,我知道是编码问题,请问怎么批量修改文件的编码呢?以前在windows下用的是gb2312~

最好是那种:运行一个命令或者脚本,把整个文件夹包括子文件夹的编码都换了,那才爽

Re: 关于批量转换编码问题

发表于 : 2009-08-02 10:56
luyang
9.04?
试试这个,是解决gedit打开txt文件乱码问题的。
用Configuratio Editor (命令:gconf-editor),修改apps->gedit-2->preferences->encoding中的 auto_detected, 把GB18030,GBK,GB2312等添加进去就行了

Re: 关于批量转换编码问题

发表于 : 2009-08-02 10:57
happyaron
google到的一个结果

#!/bin/bash
#@note: 转换文件gb2312编码至UTF-8编码
#
FILE_TYPE=".txt" #需转码的文件类型,所有文件的话置空
NUM_TYPE=`echo $FILE_TYPE | wc -c` #文件类型的长度
CODING_1="GB2312" #原文件编码
CODING_2="UTF-8" #转换后的编码
# 所有编码可以在shell下输入 iconv -l 查看
SUFFIX="_tmp" #零时文件的后缀

convert(){
#转换指定文件的编码
tmp=$file$SUFFIX
echo "Converting... $file from $CODING_1 to $CODING_2 ."
iconv -f $CODING_1 -t $CODING_2 $file -o $tmp
mv $tmp $file
#sleep 1
}

foreachd(){
#递归遍历目录
for file in $1/*
do
# 如果是目录就打印处理,然后继续遍历,递归调用
if [ -d $file ]
then
foreachd $file
else
NUM_FILE=`echo $file | wc -c`
if [ ${file:${NUM_FILE}-${NUM_TYPE}:$NUM_TYPE} == $FILE_TYPE ]
then
convert "$file"
fi
fi
done
}

# 遍历转换参数1目录下的文件编码
if [ $# == 1 ]
then
foreachd "$1"
else
echo "argv error!"
fi
# END file

Re: 关于批量转换编码问题

发表于 : 2009-08-02 11:02
O_O_BOT
for file in $(find -type f);do iconv -f cp936 -t utf8 $file -o $file; done

Re: 关于批量转换编码问题

发表于 : 2009-08-02 11:29
jiefey
:em11 已经搞定!
按照2F的方法~呵呵,谢谢啊。