UnicodeEncodeError when not running script from IDE

Dave Angel davea at davea.name
Tue Feb 12 16:58:21 CET 2013


On 02/12/2013 10:29 AM, Magnus Pettersson wrote:
>> Are you sure you are writing the same data? That would mean that pydev
>>
>> changes the default encoding -- which is evil.
>>
>>
>>
>> A portable approach would be to use codecs.open() or io.open() instead of
>>
>> the built-in:
>>
>>
>>
>> import io
>>
>> with io.open(filepath, "a") as f:
>>
>>      ...
>>
>>
>>
>> io.open() uses UTF-8 by default, but you can specify other encodings with

I think you are using Python 2.x, not Python 3.  So you'd better be 
explicit what encodings you want for each file.

>>
>> io.open(filepath, mode, encoding=whatever).
>
>
> Interesting. Pydev must be doing something behind the scenes because when i changed open() to io.open() i get error inside of eclipse now:

What encoding is this file?  Since you're appending to it, you really 
need to match the pre-existing encoding, or the next program to deal 
with it is in big trouble.  So using the io.open() without the encoding= 
keyword is probably a mistake.

>
> f.write(card+"\n")
>    File "C:\python27\lib\encodings\cp1252.py", line 19, in encode
>      return codecs.charmap_encode(input,self.errors,encoding_table)[0]
> UnicodeEncodeError: 'charmap' codec can't encode character u'\u53c8' in position 32: character maps to <undefined>
>
> ....
>


-- 
DaveA



More information about the Python-list mailing list