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
[email protected]
http://www.py.cz/mailman/listinfo/python



_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem