On Fri, May 1, 2009 at 4:54 PM, Pablo P. F. de Faria
<pablofa...@gmail.com> wrote:
> Hi, Kent.
>
> The stack trace is:
>
> Traceback (most recent call last):
>  File "/home/pablo/workspace/E-Dictor/src/MainFrame.py", line 1057, in OnClose
>    self.SavePreferences()
>  File "/home/pablo/workspace/E-Dictor/src/MainFrame.py", line 1068,
> in SavePreferences
>    self.cfg.set(u'File Settings',u'Recent files',
> unicode(",".join(self.recent_files)))
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position
> 12: ordinal not in range(128)
>
> The "unicode" function, actually doesn't do any difference... The
> content of the string being saved is "/home/pablo/Área de
> Trabalho/teste.xml".

OK, this error is in your code, not the ConfigParser. The problem is with
",".join(self.recent_files)

Are the entries in self.recent_files unicode strings? If so, then I
think the join is trying to convert to a string using the default
codec. Try

self.cfg.set('File Settings','Recent files',
','.join(name.encode('utf-8') for name in self.recent_files))

Looking at the ConfigParser.write() code, it wants the values to be
strings or convertible to strings by calling str(), so non-ascii
unicode values will be a problem there. I would use plain strings for
all the interaction with ConfigParser and convert to Unicode yourself.

Kent

PS Please Reply All to reply to the list.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to