Do toho sitecustomize.py bych to necpal. Je to soubor v podstatě vázaný na počítač. Pokud by aplikace na něco takového spoléhala, nedala by se rozumně instalovat jinde.
Přimlouvám se o naprostý přechod k Unicode -- jinak s tím bude problém vždycky. Nebo se musí přinejmenším neunicodový řetězec převést na Unicode řetězec (v kódování podle zdrojového textu) a při výstupu určit kódování přes sys.stdout.encoding nebo sys.stderr.encoding. Je to furt ten samý problém, že v Python 2.x "takovýhle" řetězec vlastně není řetězec, ale posloupnost bajtů. Vypořádává se s tím až Python 3, ale to nebrání tomu v Pythonu 2.x důsledně používat u"unicode řetězce". Jedině ty jsou řetězci, se kterými se dá něco dělat z hlediska přenositelnosti. Petr petrofF >Petr Přikryl >> petrofF >> >> >Bohužel, toto se týká jen příkazů print. >> >Pokud použiju raw_input(u"Zadej jméno...") hodí to chybu >> >> Zdá se, že jde o starou chybu, kterou jsem hlásil vývojářům skoro před >> 5 lety. Mrkni semhttp://www.py.cz/pipermail/python/2005-July/003022.html >> Jsou tam popsané projevy a možnost částečného řešení. > >Zkusil jsem místo explicitního volání: > raw_input(s.encode(sys.stdout.encoding)) >vytvořit soubor sitecustomize.py s předefinovanými vstupními funkcemi > >------------[ sitecustomize.py ]-------------------------------- > >""" > - change raw_input() and input() commands if console present > (i.e. if sys.stdout.encoding is 'cp852') > - modification of prompt argument proceed only if it is a unicode >object > (non-unicode object is treated unchanged) >""" >import sys >if sys.stdout.encoding == "cp852": > try: > import __builtin__ > original_raw_input = __builtin__.raw_input > original_input = __builtin__.input > > def raw_input(prompt=''): > if type(prompt)==unicode: > prompt = prompt.encode(sys.stdout.encoding) > return original_raw_input(prompt) > > def input(prompt=''): > return eval(raw_input(prompt)) > > raw_input.__doc__ = original_raw_input.__doc__ > input.__doc__ = original_input.__doc__ > > __builtin__.raw_input = raw_input > __builtin__.input = input > > except: > import traceback; traceback.print_exc() > >------------------------------------------------------------- >Skripty (s unicode literály) se v WinDOS okně zobrazují bezchybně. >Jen si nejsem jistý jestli je úprava kompatibilní s různými běhovými >prostředími >(IDLE, PyWin, PyDev, konzole.py apod) > -petroff- >_______________________________________________ >Python mailing list >Python@py.cz >http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python