decode(..., errors='ignore') has no effect

Peter Otten __peter__ at web.de
Tue Jan 12 11:03:08 EST 2010


Lie Ryan wrote:

> On 01/12/10 23:50, Jens Müller wrote:
>>> To convert unicode into str you have to *encode()* it.
>>>
>>> u"...".decode(...) will implicitly convert to ASCII first, i. e. is
>>> equivalent to
>>>
>>> u"...".encode("ascii").decode(...)
>>>
>>> Hence the error message
>> 
>> Ah - yes of course.
>> 
>> And how can you use the system's default encoding with errors=ignore?
>> The default encoding is the one that is used if no parameters are given
>> to "encode".
>> 
>> Thanks again!
> 
> 
>>>> import sys
>>>> sys.getdefaultencoding()
> 'ascii'
>>>> u'M\xfcnchen, pronounced
> [\u02c8m\u028fn\xe7\u0259n]'.encode(sys.getdefaultencoding(), 'ignore')
> 'Mnchen, pronounced [mnn]'
> 
> 
> unless this is for debugging, I doubt ignoring error in this particular
> case is an acceptable solution (how do you pronounce [mnn]?)

Also, I think on most systems

>>> sys.getdefaultencoding()
'ascii'

You might try

>>> locale.getpreferredencoding()
'UTF-8'

instead.

Peter



More information about the Python-list mailing list