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脚本批量实现文件的编码转换的主要内容,如果未能解决你的问题,请参考以下文章

Keil和SourceInsight中文乱码解决方法

source insight中文注释乱码问题的解决方案

Source Insight 4 中文乱码解决

Source Insight中文注释为乱码的解决办法

Source Insight 中文注释为乱码解决办法(完美解决,一键搞定)

Source Insight4.0中文注释乱码解决方案