[python] printy v češtině na WINDOWS/cmd konzoli nečitelné

petrofF petr0ff na seznam.cz
Pátek Březen 31 13:30:52 CEST 2017


On 28 dub, 21:48, Petr Přikryl <prik... na atlas.cz> wrote:
> 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-


Další informace o konferenci Python