[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