[python] Unicode řetězce

Radek Kubicek xkubic23 na stud.fit.vutbr.cz
Pondělí Únor 6 20:20:52 CET 2006


>> Mam dojem, ze tazatel ma problem se zapisem unicodoveho retezce do souboru.
>> Zapisuje ho tam myslim primo, a to selze  pri konverzi unicodoveho znaku na
>> ascii.
>> Jak to udelat jinym zpusobem nez unicode prevest napriklad na utf-8 nevim.

No, ano i ne. Do toho souboru to funguje skvěle, ale... stejně musím
převést všechny řetězce zadané do aplikace do unicode, abych je mohl
zapsat do souboru. Problém je v tom, že když tyto řetězce převedu do
unicode, tak např. \print retezec\ mi to vytiskne správně, ale \print
"neco neco %s" % retezec.decode('utf-8')\ uz vyhodí výjimku.

O to mi jde... abych dokázat převádět řetězce načtené ze souboru, zadané
v gui nebo na konzoli do unicode a zpět je kamkoli vypisoval (ať už
pomocí print nebo jen prostě převedl na zobrazitelný řetězec a plánout
ho např. do edit boxu) a potom i uložil a načetl do xml souboru.

sys.getfilesystemencoding() by mohla být dobrá volba pro zjištění
kódování systému, ne?

> 
> V modulu codecs jsou na to wrappery. Lze tak nacitat a zapisovat primo
> unicode. Je samozrejme potreba znat kodovani souboru.
> 
>     >>> import codecs
>     >>> out = codecs.open('out.txt', 'w', 'latin2')
>     >>> out.write(u'foo\n')
>     >>> out.close()
> 
> Radek Kaňovský



Další informace o konferenci Python