[python] Unicode/ne-unicode problem

Jaroslav Lukesh lukesh na seznam.cz
Pátek Duben 27 10:35:04 CEST 2012


Dobrý den,

potřeboval bych dostat z binárních dat utf8 na vstupu normální neunicodový 
výstup, ale nějak mi to nejde.

Vstup: znaky "ě š č ř" v utf8 již v binární formě, systém je v iso8859-2

Čekám že z toho nějak dostanu "ě š č ř" ale pořád nic. Jak mu říct, že 'Ă˝ 
á Ă­ Ă.' je už v utf8?

Děkuji, JL.

>>> a='Ă˝ á Ă­ Ă.'
>>> A=unicode(a,'iso8859-2')
>>> print a
Ă˝ á Ă­ Ă.
>>> A=unicode(a,'utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/var/zope/python/lib/python2.4/encodings/utf_8.py", line 16, in 
decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 9-10: 
invalid data

>>> A.encode('iso8859-2')
'\xc3\xbd \xc3\xb7 \xc3\xad \xc3.'

>>> a.encode('iso8859-2')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/var/zope/python/lib/python2.4/encodings/iso8859_2.py", line 18, in 
encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: 
ordinal not in range(128)
>>>

>>> A.decode('iso8859-2')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/var/zope/python/lib/python2.4/encodings/iso8859_2.py", line 22, in 
decode
    return codecs.charmap_decode(input,errors,decoding_map)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: 
ordinal not in range(128)
>>> a.decode('iso8859-2')
u'\u0102\u02dd \u0102\u02c7 \u0102\xad \u0102.'
>>> a.decode('utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/var/zope/python/lib/python2.4/encodings/utf_8.py", line 16, in 
decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 9-10: 
invalid data
>>>




Další informace o konferenci Python