从数据库导出的数据(csv)用Notepad++打开文件显示正常,用excel打开乱码。这种情况下我们可以用Notepad++打开之后修改文件的编码格式。保存之后用excel打开可以解决乱码的问题。题主之前都是这样的处理,但是当时采集的文件总共有1100万行+的数据,题主对文件进行了拆分拆分为109个小文件。这种情况之下题主就不能采取一个打开自己转码然后保存了,题主和业务的同事沟通,业务的同事说一定要用excel打开。本着为业务服务的精神。题主写了下面的脚本将一个文件下面的所有文件批量转换编码。这样100多个文件分分钟转码成功。
题主写这个脚本之前先用python查看了打开为乱码文件的编码为“UTF-8”,转码之后打开正常的文件编码为“UTF-8-SIG”
脚本如下:
import os
path ='csv文件路径'
targetPath = '转换编码保存路径'
def getfiles(path):
path_collection=[]
for dirpath,dirnames,filenames in os.walk(path):
for file in filenames:
fullpath=os.path.join(dirpath,file)
path_collection.append(fullpath)
return path_collection
def covertCode(file):
sourcefile = open(file,'r')
s = sourcefile.read()
sourcefile.close()
targetFile = getTargetFile(file,targetPath)
tf = open(targetFile,"w")
a = s.decode("utf-8").encode("utf-8-sig")
tf.write(a)
tf.close()
def getTargetFile(file,targetpath):
filename = os.path.basename(file)
targetfile = os.path.join(targetpath,filename)
return targetfile
for file in getfiles(path):
covertCode(file)
网友评论