关于批量转换编码问题

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
jiefey
帖子: 144
注册时间: 2009-07-24 0:14

关于批量转换编码问题

#1

帖子 jiefey » 2009-08-02 10:53

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

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

代码: 全选

好东西>> http://yisnet.com/go/
头像
luyang
帖子: 290
注册时间: 2008-10-29 11:59
来自: 中国 新安江特别行政区

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

#2

帖子 luyang » 2009-08-02 10:56

9.04?
试试这个,是解决gedit打开txt文件乱码问题的。
用Configuratio Editor (命令:gconf-editor),修改apps->gedit-2->preferences->encoding中的 auto_detected, 把GB18030,GBK,GB2312等添加进去就行了
世间这样荒芜。寂静深不可测量。如果你不在我的身边。我这样想念你。
happyaron
帖子: 473
注册时间: 2008-04-27 1:10
来自: http://blogs.gnome.org/happyaron/

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

#3

帖子 happyaron » 2009-08-02 10:57

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
I will always return.
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

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

#4

帖子 O_O_BOT » 2009-08-02 11:02

for file in $(find -type f);do iconv -f cp936 -t utf8 $file -o $file; done
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
头像
jiefey
帖子: 144
注册时间: 2009-07-24 0:14

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

#5

帖子 jiefey » 2009-08-02 11:29

:em11 已经搞定!
按照2F的方法~呵呵,谢谢啊。

代码: 全选

好东西>> http://yisnet.com/go/
回复