configparser读取含有中文的配置(Windows)
运行环境:Windows7.1
在 Python 3 中虽有encoding 参数,但是对于有BOM(如Windows下用记事本指定为utf-8)的文件,需要使用 utf-8-sig, 使用utf-8就没戏.
配置文件 (utf-8格式,带BOM)
-
[test]
-
a = 中文
Python3下面的代码:
-
# -*- coding:utf-8 -*-
-
import configparser
-
config = configparser.ConfigParser()
-
config.read('test.cfg.txt',encoding="utf-8-sig") #,encoding="utf-8"
-
-
print ( config['test']['a'])
Python2 下面的代码:
-
# -*- coding:utf-8 -*-
-
import ConfigParser
-
import codecs
-
config = ConfigParser.ConfigParser()
-
with codecs.open('test.cfg.txt', encoding="utf-8-sig" ) as f:
-
config.readfp(f)
-
print ( config.get("test", "a"))
使用utf-8的错误:
configparser.MissingSectionHeaderError: File contains no section headers.
file: 'test.cfg', line: 1
'ufeff[test]
'
这个问题在Linux下是没有的。
转载于:https://my.oschina.net/cppblog/blog/384099