[python] Unicode řetězce
geon
geon na post.cz
Pondělí Únor 6 17:22:57 CET 2006
Tento "program" vám bude vždy češtinu tisknout dobře, protože ve stejném
kodovani čte i tiskne:
text=raw_input("Zadej cesky text: ")
print text
Pokud chcete text převést na unicode, musíte nejdřív vědět, v kterém
kodovani byl pořízen. Třeba u mě na konsoli Windows to je cp852. V IDLE
to je "cp1250", v mém Linuxu to je tuším iso-8859-2. Takže když z toho
chci udělat unicode, musím to převést takto:
text=raw_input("Zadej cesky text: ")
print unicode(text,"cp852") # pro konsoli windows
Tímto způsobem to tiskne taky dobře (stejně jako v předchozím případě),
ale navíc, to můžete použít kdekoliv chcete, protože to je unicode.
Navíc, pokud budete zadávat řetězce přímo v textu programu, musíte před
ně dát "u" a na první řádek doplnit informaci o použitém kodovaní.
To přesměrování do souboru, kde to hází chybu, můžete ukázat kod?
geon
Radek Kubicek napsal(a):
> Zdravím.
>
> Mám následující problém. Dělám aplikaci, ve které bych chtěl používat
> řetězce tím stylem, že se všechny převádí do UTF-8 a pracuje se s ním.
> Ale problém je v tom, že když zadám nějaký řetězec a načtu ho do
> proměnné (např. str), potom str.encode('utf-8') i str.decode('utf-8') i
> unicode(str, 'utf-8') vyhodí výjimku...
>
> A i pokud se mi to podaří tak, že řetězce se převedou a v pořádku
> vypíší, pokud tento výstup přesměruju do souboru (pomocí: aplikace >
> soubor), vyhodí mi to UnicodeError při prvním non-ascii znaku.
>
> Nevíte někdo, jak na to?
>
> RK
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>
Další informace o konferenci Python