python 转化文件编码 utf8

时间:2022-04-01 14:06:11

使用visual studio最大的一个问题就是文件编码问题,当文件中有中文时,visual studio 会默认为区域编码,也就是gb2312,如果想跨平台或者不用vs编译的话,就会因为编码问题导致各种错误。

所以写了个python脚本来检测原文件编码并转换为目标编码,以下代码以目标编码为utf-8为例:

需要安装chardet,详情:https://pypi.python.org/pypi/chardet 

使用方法:python to_utf8.py /my_project/src

import codecs
import os
import sys
import shutil
import re
import chardet

convertdir
= sys.argv[1]
convertfiletypes
= [
".cpp",
".h",
".hpp"
]

def convert_encoding(filename, target_encoding):
# Backup the origin file.

# convert file from the source encoding to target encoding
content = codecs.open(filename, 'r').read()
source_encoding
= chardet.detect(content)['encoding']
if source_encoding != 'utf-8':
print source_encoding, filename
content
= content.decode(source_encoding, 'ignore') #.encode(source_encoding)
codecs.open(filename, 'w', encoding=target_encoding).write(content)

def main():
for root, dirs, files in os.walk(convertdir):
for f in files:
for filetype in convertfiletypes:
if f.lower().endswith(filetype):
filename
= os.path.join(root, f)
try:
convert_encoding(filename,
'utf-8')
except Exception, e:
print filename

if __name__ == '__main__':
main()