分页: 1 / 1
关于批量转换编码问题
发表于 : 2009-08-02 10:53
由 jiefey
我在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
已经搞定!
按照2F的方法~呵呵,谢谢啊。