[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