运营同学需求扫库统计全服大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()