Excel打开无BOM-UTF8文件中文乱码

  运营同学需求扫库统计全服大V玩家,在数据库上扫出结果发过去之后,反馈说使用Excel打开玩家姓名都是乱码。看了下发过去的文件,发现都是linux下不带BOM的UTF8编码文件,而Excel作为Windows下的软件,需要使用BOM头来确定文件为UTF8编码,所以需要给文件加上BOM头。

  一般的需求都是去掉BOM头,这次需求居然是加上BOM头,比较奇怪,不过试了下,发现用Python完成转换还是非常方便的,读出来直接decode/encode即可,代码如下:

  

 1 #coding=utf8
 2 #将文件夹内的所有文件由utf8转换为utf8_With_Bom
 3 
 4 import os
 5 
 6 rootDir = 'D:\\111\\'
 7 
 8 def Trans():
 9     for lists in os.listdir(rootDir):
10         path = os.path.join(rootDir, lists)
11         if not os.path.isdir(path):
12             f = open(path,'rb')
13             content = f.read()
14             f.close()
15             temp = content.decode('utf-8')
16             result = temp.encode('utf-8-sig')
17             f = open(path.replace('.txt', '.result.txt'),'wb')
18             f.write(result)
19             f.close()
20 
21 if __name__ == '__main__':
22     Trans()

 

posted @ 2014-11-13 22:57  gns3  阅读(893)  评论(0编辑  收藏  举报