b64encode and unicode problem

Gabriel Rossetti gabriel.rossetti at arimaz.com
Mon May 26 08:32:32 EDT 2008


Peter Otten wrote:
> Gabriel Rossetti wrote:
>
>   
>> Hello everyone,
>>
>> I am trying to encode a string using b4encode and I get the following
>> error :
>>
>>  >>> b64encode(u"Salut Pierre, comment ça va?")
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>>   File "/usr/lib/python2.5/base64.py", line 53, in b64encode
>>     encoded = binascii.b2a_base64(s)[:-1]
>> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in
>> position 22: ordinal not in range(128)
>>
>> If I remove the "u" infront of the string, it works. The problem is that
>> I in my program, the string is given to me un unicode/utf-8. I tried
>> several things, but I still get it, How can I get it to work, anybody
>> have any idea?
>>     
>
>   
>>>> base64.b64encode(u"Salut Pierre, comment ça va?".encode("utf8"))
>>>>         
> 'U2FsdXQgUGllcnJlLCBjb21tZW50IMOnYSB2YT8='
>
> unicode is a sequence of codepoints with no predetermined representation as
> a byte sequence. Therefore whenever you go from unicode to str you have to
> decide upon an encoding. If you don't make that decision python assumes
> ascii which will of course fail for non-ascii characters.
>
> Peter
>
>   
Ok, I get it better now, thanks!
Gabriel




More information about the Python-list mailing list