SourceInsight解决中乱码问题,python脚本批量实现文件的编码转换
Posted 小丑快学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SourceInsight解决中乱码问题,python脚本批量实现文件的编码转换相关的知识,希望对你有一定的参考价值。
SourceceInsight用于源码的阅读是非常方便的,但是会出现中文乱码的问题,进过查询得知SourceInsight默认的编码为ANSI编码格式,因次我们常用的utf-8编码方式对于中文的注释便会乱码,网上给出的很多解决方法我都尝试了,似乎用处并不大。但是手动的将文件编码格式转换为ANSI的方式可以解决中文乱码的问题,鉴于很多源代码的文件数量庞大,因此,我写了一个python脚本对文件的进行批量编码格式转换。你只需要将主函数中的目录改为你的源码所在的目录,然后运行脚本便可以了。
import os
import chardet
import codecs
#将一个文件的编码格式改为另一种编码格式
'''
参数
file:文件名
recoding : 新的编码方式
'''
def ReCode(file,recodeing):
#将文件以ANSI的编码格式写入,但是为了防止写的时候出错,需要将原来的文本先保存
orgin_text = codecs.open(file,'rb').read()
orgin_encoding = chardet.detect(orgin_text)['encoding']
try:
new_text = orgin_text.decode(orgin_encoding).encode(recodeing)
codecs.open(file,'wb').write(new_text)
print("seting %s to %s successfully!!"%(file, recodeing))
except:
#转换发生异常则将原来的文本写回文件中
codecs.open(file,'wb').write(orgin_text)
print("\\n!!!!!%s seting error!! \\n"%(file))
'''
遍历文件夹并将文件夹中的 .c 和.h 文件转换为 ANSI 编码格式
'''
def walk_through(dir):
for currdir , dirs ,files in os.walk(dir):
for file in files:
if file.endswith('.c') or file.endswith('.h'):
filename = os.path.join(currdir,file)
ReCode(filename, r'ANSI')
if __name__=="__main__":
dir = r'E:\\Desktop\\redis\\redis\\redis-3.0-annotated-unstable'
walk_through(dir)
以上是关于SourceInsight解决中乱码问题,python脚本批量实现文件的编码转换的主要内容,如果未能解决你的问题,请参考以下文章