Ano. Bajty posílané na cmd se v českých Windows interpretují jako znaky v kódování cp852. To je rodné kódování původně DOSového okna.
Hynek Fabian >petrofF >> V PyDev/Eclipse je zobrazení (Pydev Console) v pořádku: >> - v editoru nastavené kódování cp1250 >> - uvozeno: # -*- coding: cp1250 -*- Je to tím, že se nepoužívá konzolové okno, ale klasické GUI okno, ve kterém se bajty interpretují jako znaky v cp1250. >> Tentýž script.py je v konzoli (Python 2.5 / Windows XP / cmd: default >> CP=1250) zobrazen chybně: >> Např.: >> [0x82] é se zobrazí jako Ú >To bude mít možná nějakou souvislost s tím, že dlouhé e není 0x82 ale 0xE9 :-) > >konstrukce #-*- coding: cp1250 -*- má vliv pouze na řetezcové literály v kódu, >jestli čteš data odjinud, musíš si je dekódovat sám. >Totéž se týká výstupu, příkaz print respektuje nastavení prostředí, metoda >write() prostě bleje bajty a překódování je zase na tobě. >V *nixu je prostředí řízeno LC_ALL, jak to řeší wydle netuším. Ale mám >nepříjemný pocit že cmd.exe simuluje v českých wydlích dosovskou cp852. Pořádně to řeší až Python 3, ale dá se to pořádně řešit i v Python 2. Musí se ale systematicky používat Unicode řetězce. Ty umí správně zobrazit jak cmd okno, tak GUI okno. Řetězce ve smyslu "posloupnosti abstraktních znaků' jsou v Pythonu 2 jen Unicode řetězce. Ostatní řetězce jsou jen posloupnostmi bajtů, které nenesou informaci o svém kódování. Zkus takovýhle skriptík ================================================== # -*- coding: cp1250 -*- b = 'příšerně žluťoučký kůň úpěl ďábelské ódy' s = u'příšerně žluťoučký kůň úpěl ďábelské ódy' print b print s ================================================== V GUI okně budou oba řádky správně. V cmd okně bude správně jen ten druhý. V proměnné b je totiž posloupnost bajtů, které lze správně interpretovat jen při použití stejného kódování, jaké se používalo v editoru. V proměnné s je skutečný řetězec, který lze jednoznačně interpretovat kdekoliv. P. _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python