configparser讀取含有中文的配置(Windows)

運行環境:Windows7.1python

在 Python 3 中雖有encoding 參數,可是對於有BOM(如Windows下用記事本指定爲utf-8)的文件,須要使用 utf-8-sig, 使用utf-8就沒戲.code

配置文件 (utf-8格式,帶BOM)utf-8

[test]
a = 中文

Python3下面的代碼:get

# -*- 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 下面的代碼:it

# -*- 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的錯誤:io

configparser.MissingSectionHeaderError: File contains no section headers.
file: 'test.cfg', line: 1
'\ufeff[test]\n'class

這個問題在Linux下是沒有的。test

相關文章
相關標籤/搜索