Děkuji, ale nechápu, jak proměnné říct, že už obsahuje text v kódování UTF8.
Mám proměnnou, která obsahuje 'Ă˝ á Ă Ă.' tedy přesněji, toto je ve
windowsech vidět, když si zobrazíte utf8 v cp1250. Python mám ale na Linuxu
v LANG=cs_CZ.iso8859-2. Ty znaky v UTF8 tam jdou binárně zvenčí a nevím jak
pythonu říct, že to má považovat za utf8.
Chtěl bych to udělat systémově, než na ten vstup poštvat 50x replace.
Děkuji, JL.
----- Původní zpráva -----
Od: "Petr Přikryl" <prik...@atlas.cz>
Nejjednodušší je to převést nejdříve do Unicode a druhým krokem do
požadovaného
kódování. Tohle jsem dělal pod Windows na konzoli, která používá cp852:
u = u"ě š č ř"
u
u'\u011b \u0161 \u010d \u0159'
s = u.encode('utf-8')
s
'\xc4\x9b \xc5\xa1 \xc4\x8d \xc5\x99'
u2 = s.decode('utf-8')
u2
u'\u011b \u0161 \u010d \u0159'
u3 = unicode(s, 'utf-8')
u3
u'\u011b \u0161 \u010d \u0159'
sLatin2 = u.encode('iso8859_2')
sLatin2
'\xec \xb9 \xe8 \xf8'
.decode() nebo unicode() to převede na Unicode řetězec.
.encode() to převede na požadované kódování.
V názvu kódování má být oficiálně znak podtržení, ale
implementace toleruje i uvedení velkých písmen a pomlček.
Měj se,
Petr
______________________________________________________________
Od: "Jaroslav Lukesh" <luk...@seznam.cz>
Komu: Konference PyCZ <python@py.cz>
Datum: 27.04.2012 10:35
Předmět: [python] Unicode/ne-unicode problem
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
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python