pythonプログラムはファイルを符号化して変換します
3063 ワード
# -*- coding: utf-8 -*-
import os
import shutil
import re
import sys
'''
: gb2312 gbk utf-8 。
, src ddn ,src 。
src ddn ,
'''
src=os.getcwd()+'\\'+'!wwwroot'
ddn=os.getcwd()+'\\'+'www'
#####################################
def search(root,handler):
global ddn
list=os.listdir(root)
for f in list:
cf=root+'\\'+f
if os.path.isdir(cf):
search(cf,handler)
else:
handler(cf,ddn)#the function dealing with file
##########################################################
def copy(sfn,ddn):
global src
ddn=ddn+os.path.dirname(sfn).replace(src,'')
def copymain():#main code of copy function
fn=os.path.basename (sfn)
if re.search ('php',fn,re.I):# php ,
sf=open(sfn,'r')
s=sf.read()
try:#
if re.search(r'charset=gb2312',s,re.I):#gb2312
print 'gb2312: ',sfn
s=re.sub('charset=gb2312','charset=utf-8',s)
s=s.decode('gbk')
df=open(ddn+'\\'+os.path.basename(sfn),'w')
df.write(s.encode('utf-8'))
df.flush()
sf.close()
df.close()
elif re.search(r'charset=utf-8',s,re.I):#utf-8
print 'utf-8: ',sfn
sf.close()
shutil.copy2(sfn,ddn)
else:# gb2312 utf-8
s=s.decode('gbk')
df=open(ddn+'\\'+os.path.basename(sfn),'w')
df.write(s.encode('utf-8'))
df.flush()
sf.close()
df.close()
print '*** ',sfn
except:
sf.close
print sfn
sys.exit()
else:# ,
shutil.copy2(sfn,ddn)
if os.path.exists (ddn):
copymain()
#'''
else:#directory not exist,create it
os.makedirs (ddn)
copymain()
#'''
search(src,copy)
gb 2312からutf-8に変換される.ソース:ここをクリックして添付ファイルをダウンロード(gbtoutf 8) from:http://www.iteedu.com/myarticle/plang/python/gb-to-utf8.php