项目中遇到要读取配置的情况, 所有就用了 ConfigParser 模块, 乍一看没有啥问题, 但是测试过程中发现还是有坑.
在windows版的程序中, 客户配置ini文件一般都是用记事本修改, 但是本身记事本会强制加上一个BOM头, 然后ConfigParser在read时候救护抛错, 尝试了一些方法, 最终用指定read的编码方式的方法解决, 这里贴一下.
configparser.ConfigParser().read(config_file_path, encoding="utf-8-sig")
当然还有别的方法:
fp = open("file.txt")
s = fp.read()
u = s.decode("utf-8-sig")
# That gives you a unicode string without the BOM. You can then use
s = u.encode("utf-8")
本质差不多.
Reference: