使用vs2019编译时报错:该字符在当前源字符集中无效(代码页 65001)
是gbk文件和utf-8文件混合编译导致的。
于是有以下解决方案:把gbk文件全部转化成utf-8
-
安装python
-
安装chardet
pip install chardet
-
编写python脚本(以下是可用内容,根据自己需求自己改)
import os import sys import chardet from codecs import open def detect_encoding(file): with open(file, 'rb') as f: result = chardet.detect(f.read()) return result['encoding'] or 'utf-8' def convert_file(input_file, output_file): detected_encoding = detect_encoding(input_file) with open(input_file, 'r', encoding=detected_encoding, errors='replace') as f: content = f.read() with open(output_file, 'w', encoding='utf-8') as f: f.write(content) if __name__ == "__main__": directory = sys.argv[1] if len(sys.argv) > 1 else '.' for filename in os.listdir(directory): if filename.endswith('.h'): input_file = os.path.join(directory, filename) output_file = os.path.join(directory, filename.rsplit('.', 1)[0] + '.utf8.h')//这里是生成改后的文件名(xxx.utf8.h) convert_file(input_file, output_file)
-
执行脚本
python utf8.py 要执行的文件夹名