簡體   English   中英

編寫ConfigObj時出現Ascii編解碼器錯誤

[英]Ascii codec error when writing ConfigObj

我會讀/寫俄語文本,例如:

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

我得到錯誤:

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上...請幫助我。 我究竟做錯了什么?

在編寫配置之前,如果輸出還不是二進制類型,則對輸出進行編碼。 這就是為什么它可以在Python 2上運行的原因。

為了正確處理encoding ,您需要相應地進行設置:

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

幾乎。 由於您使用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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM