Ono to možná nikam nevede. Bez posledních dvou znaků je to OK:<div><br></div><div><div>>>> print "\xC3\xBD \xC3\xB7 \xC3\xAD".decode("utf8")</div><div>ý ÷ í</div><div><br></div><div>Ono za \xC3 musí z definice UTF-8 následovat bajt, který má nastavený nejvyšší bit, a to obyčejná tečka není snad v žádném kódování, rozhodně v žádném založeném na ASCII jako je cp1250, latin1, latin2 atd.</div>
<div><br></div><div>Prostě si myslím, že tohle: 'Ă˝ á Ă Ă.' je špatně, nějak useknuté, něco vynechané apod.</div><div><br></div><div>Můžete nám ten zdroj dat v UTF-8 nějak popsat? Je to nějaká databáze?</div><div>
<br></div><div>PM</div><div><br></div><br><div class="gmail_quote">Dne 2. května 2012 13:08 Jaroslav Lukesh <span dir="ltr"><<a href="mailto:lukesh@seznam.cz" target="_blank">lukesh@seznam.cz</a>></span> napsal(a):<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Mezitím jsme v jiném threadu zjistili, že jde o utf8 zapsané v cp1250, ale i tak mám tohle - Python 2.4.6:<div class="im">
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a='Ă˝ á Ă Ă.'<br>
repr(a)<br>
</blockquote></blockquote></blockquote>
"'\\xc3\\xbd \\xc3\\xb7 \\xc3\\xad \\xc3.'"<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a.decode("cp1250")<br>
</blockquote></blockquote></blockquote>
u'\u0102\u02dd \u0102\xb7 \u0102\xad \u0102.'<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
print eval(a).decode("cp1250")<br>
</blockquote></blockquote></blockquote><div class="im">
Traceback (most recent call last):<br>
File "<stdin>", line 1, in ?<br></div>
File "<string>", line 1<br>
Ă˝ á Ă Ă.<br>
^<br>
SyntaxError: invalid syntax<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
</blockquote></blockquote></blockquote>
<br>
No teď už jenom to reverznout z cp1250 na utf8 a to pak už správně převést na cp1250. jenže necode/decode neumí vzít 2 parametry pro kódování, tak se to pokusím zřetězit:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a.decode('cp1250')<br>
</blockquote></blockquote></blockquote>
u'\u0102\u02dd \u0102\xb7 \u0102\xad \u0102.'<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a.decode('cp1250').encode('<u></u>utf8')<br>
</blockquote></blockquote></blockquote>
'\xc4\x82\xcb\x9d \xc4\x82\xc2\xb7 \xc4\x82\xc2\xad \xc4\x82.'<br>
<br>
Sice jsem pokročil, ale je to nějak delší a delší.<div class="HOEnZb"><div class="h5"><br>
<br>
----- Původní zpráva ----- Od: "Petr Přikryl" <<a href="mailto:prikryl@atlas.cz" target="_blank">prikryl@atlas.cz</a>><br>
<br>
<br>
Já vidím tohle:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
rr = "'\\xc3\\xbd \\xc3\\xb7 \\xc3\\xad \\xc3.'"<br>
a = eval(rr)<br>
a<br>
</blockquote></blockquote></blockquote>
'\xc3\xbd \xc3\xb7 \xc3\xad \xc3.'<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
u = a.decode('utf-8')<br>
</blockquote></blockquote></blockquote>
Traceback (most recent call last):<br>
File "<stdin>", line 1, in <module><br>
File "c:\Python27\lib\encodings\<u></u>utf_8.py", line 16, in decode<br>
return codecs.utf_8_decode(input, errors, True)<br>
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 9: invalid continuation byte<br>
<br>
<br>
To rr je okopírované tvoje repr. Pomocí eval() to převedu na hodnotu a. Pak volám<br>
a.decode('utf-8') a ono to jinými slovy říká, že to není v utf-8.<br>
<br>
P.<br>
______________________________<u></u>______________________________<u></u>__<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Od: "Jaroslav Lukesh" <<a href="mailto:lukesh@seznam.cz" target="_blank">lukesh@seznam.cz</a>><br>
Komu: Konference PyCZ <<a href="mailto:python@py.cz" target="_blank">python@py.cz</a>><br>
Datum: 02.05.2012 11:52<br>
Předmět: Re: [python] Unicode/ne-unicode problem<br>
<br>
Je to proměnná, kde obsah byl získaný ze streamu dat.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a='Ă˝ á Ă Ă.'<br>
repr(a)<br>
</blockquote></blockquote></blockquote>
"'\\xc3\\xbd \\xc3\\xb7 \\xc3\\xad \\xc3.'"<br>
<br>
Dík, JL.<br>
<br>
<br>
----- Původní zpráva ----- Od: "Petr Přikryl" <<a href="mailto:prikryl@atlas.cz" target="_blank">prikryl@atlas.cz</a>><br>
<br>
<br>
Ten nečitelný řetězec je zapsaný ve zdrojovém textu, nebo je načtený ze<br>
souboru?<br>
Když mám v proměnné UTF-8 bajty, tak musím udělat .decode() nebo unicode(),<br>
ale jako parametr musím uvést to 'utf-8'.<br>
<br>
Posloupnost bajtů v kódovaní UTF-8 je jednou z možných reprezentací Unicode<br>
řetězce. Vznikla tedy zakódováním (například u.encode('utf-8')) unicodového<br>
řetězce.<br>
Když z toho chci dostat zpět Unicode řetězec, musím provést dekódování,<br>
takže u = s.decode('utf-8') nebo u = unicode(s, 'utf-8').<br>
<br>
Je možné, že je ta posloupnost bajtů porušená, pak to může řvát, že neví co<br>
s tím.<br>
Pošli sem, jak vypadá repr(a) (pokud je to pro Python 2).<br>
<br>
Ptej se dál, ono se to vyjasní.<br>
<br>
P.<br>
<br>
______________________________<u></u>______________________________<u></u>__<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Od: "Jaroslav Lukesh" <<a href="mailto:lukesh@seznam.cz" target="_blank">lukesh@seznam.cz</a>><br>
Komu: Konference PyCZ <<a href="mailto:python@py.cz" target="_blank">python@py.cz</a>><br>
Datum: <a href="tel:27.04.2012%2010" value="+12704201210" target="_blank">27.04.2012 10</a>:35<br>
Předmět: [python] Unicode/ne-unicode problem<br>
<br>
Dobrý den,<br>
<br>
potřeboval bych dostat z binárních dat utf8 na vstupu normální neunicodový<br>
výstup, ale nějak mi to nejde.<br>
<br>
Vstup: znaky "ě š č ř" v utf8 již v binární formě, systém je v iso8859-2<br>
<br>
Čekám že z toho nějak dostanu "ě š č ř" ale pořád nic. Jak mu říct, že 'Ă˝<br>
á Ă Ă.' je už v utf8?<br>
<br>
Děkuji, JL.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a='Ă˝ á Ă Ă.'<br>
A=unicode(a,'iso8859-2')<br>
print a<br>
</blockquote></blockquote></blockquote>
Ă˝ á Ă Ă.<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
A=unicode(a,'utf8')<br>
</blockquote></blockquote></blockquote>
Traceback (most recent call last):<br>
File "<stdin>", line 1, in ?<br>
File "/var/zope/python/lib/python2.<u></u>4/encodings/utf_8.py", line 16, in<br>
decode<br>
return codecs.utf_8_decode(input, errors, True)<br>
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 9-10:<br>
invalid data<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
A.encode('iso8859-2')<br>
</blockquote></blockquote></blockquote>
'\xc3\xbd \xc3\xb7 \xc3\xad \xc3.'<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a.encode('iso8859-2')<br>
</blockquote></blockquote></blockquote>
Traceback (most recent call last):<br>
File "<stdin>", line 1, in ?<br>
File "/var/zope/python/lib/python2.<u></u>4/encodings/iso8859_2.py", line 18, in<br>
encode<br>
return codecs.charmap_encode(input,<u></u>errors,encoding_map)<br>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0:<br>
ordinal not in range(128)<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
</blockquote></blockquote></blockquote>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
A.decode('iso8859-2')<br>
</blockquote></blockquote></blockquote>
Traceback (most recent call last):<br>
File "<stdin>", line 1, in ?<br>
File "/var/zope/python/lib/python2.<u></u>4/encodings/iso8859_2.py", line 22, in<br>
decode<br>
return codecs.charmap_decode(input,<u></u>errors,decoding_map)<br>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1:<br>
ordinal not in range(128)<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a.decode('iso8859-2')<br>
</blockquote></blockquote></blockquote>
u'\u0102\u02dd \u0102\u02c7 \u0102\xad \u0102.'<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a.decode('utf8')<br>
</blockquote></blockquote></blockquote>
Traceback (most recent call last):<br>
File "<stdin>", line 1, in ?<br>
File "/var/zope/python/lib/python2.<u></u>4/encodings/utf_8.py", line 16, in<br>
decode<br>
return codecs.utf_8_decode(input, errors, True)<br>
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 9-10:<br>
invalid data<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
</blockquote></blockquote></blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@py.cz" target="_blank">Python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/<u></u>listinfo/python</a><br>
<br>
</blockquote>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@py.cz" target="_blank">Python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/<u></u>listinfo/python</a><br>
<br>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@py.cz" target="_blank">Python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/<u></u>listinfo/python</a><br>
<br>
</blockquote>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@py.cz" target="_blank">Python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/<u></u>listinfo/python</a> <br>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@py.cz" target="_blank">Python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/<u></u>listinfo/python</a><br>
</div></div></blockquote></div><br></div>