के साथ ConfigParser ConfigParser के साथ मेरी परेशानी जारी है। ऐसा लगता है कि यह यूनिकोड का बहुत अच्छा समर्थन नहीं करता है। कॉन्फ़िगरेशन फ़ाइल वास्तव में यूटीएफ -8 के रूप में सहेजी जाती है, लेकिन जब कॉन्फ़िगरर्स इसे पढ़ता है तो ऐसा लगता है कि यह किसी और चीज में एन्कोड किया गया है। मैं मान लिया था लैटिन -1 और मैं optionxform
अधिभावी मदद कर सकता है thougt:यूनिकोड आइटम
-- configfile.cfg --
[rules]
Häjsan = 3
☃ = my snowman
-- myapp.py --
# -*- coding: utf-8 -*-
import ConfigParser
def _optionxform(s):
try:
newstr = s.decode('latin-1')
newstr = newstr.encode('utf-8')
return newstr
except Exception, e:
print e
cfg = ConfigParser.ConfigParser()
cfg.optionxform = _optionxform
cfg.read("myconfig")
बेशक
, जब मैं config मैं पढ़ें:
'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
मैं में कई भिन्नताएं के एक जोड़े की कोशिश की है डिकोडिंग 'है लेकिन बिंदु मूक लगता है, क्योंकि यह वास्तव में शुरुआत से एक यूनिकोड वस्तु होना चाहिए। आखिरकार, कॉन्फ़िगरेशन फ़ाइल यूटीएफ -8 है? मैंने पुष्टि की है कि कॉन्फ़िगरर्स इस फ़ाइल को डमी कॉनफिग क्लास के साथ दबाकर फ़ाइल को पढ़ता है। अगर मैं इसका उपयोग करता हूं तो सब कुछ अच्छा यूनिकोड, ठीक और बेवकूफ है।
-- config.py --
# -*- coding: utf-8 -*-
apa = {'rules': [(u'Häjsan', 3), (u'☃', u'my snowman')]}
class DummyConfig(object):
def sections(self):
return apa.keys()
def items(self, section):
return apa[section]
def add_section(self, apa):
pass
def set(self, *args):
pass
यूनिकोड का समर्थन करने वाले अन्य कॉन्फ़िगरेशन मॉड्यूल के अन्य सुझावों के सुझाव या सुझावों का कोई भी विचार सबसे अधिक स्वागत है। मैं sys.setdefaultencoding()
का उपयोग नहीं करना चाहता!
स्नोमैन 'लैटिन-1' – u0b34a0f6ae
कभी कभी Exception' को छोड़कर' कर का हिस्सा नहीं है; उस वास्तविक अपवाद को पकड़ें जिसे आप जानते हैं कि कैसे संभालें। –