2015-08-25 45 views
2

當我wonna讀/寫俄文本,例如:Ascii碼編解碼器的錯誤寫ConfigObj

​​

我得到錯誤:

obj.write() 
File "/usr/lib/python3.4/site-packages/configobj-5.0.6-py3.4.egg/configobj.py", line 2119, in write 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-13: ordinal not in range(128) 

關於Python 2.7一切工作正常,但3.4 .. 。 請幫幫我。我究竟做錯了什麼?

回答

0

在寫配置之前,如果輸出不是二進制類型,那麼輸出將被編碼。這就是爲什麼它的工作原理上的Python 2.

要正確處理encoding,則需要進行相應的設置:

obj = ConfigObj('config.ini', encoding='utf8') 
0

差不多。由於您使用UTF-8字符串設置密鑰,因此您的ConfigObj數據結構現在混合使用了Unicode和UTF-8。

選項default_encoding控制從UTF-8到Unicode的轉換。然後選項encoding控制從Unicode轉換回UTF-8,這是如果最終寫入文件。

所以,你想:

from configobj import ConfigObj 
obj = ConfigObj('config.ini', default_encoding='utf8') 
mydata = ['вася', 'петя'] 
obj['users'] = mydata 
obj.write() 
相關問題