Non-ascii characters in an MSDOS window

Martin v. Löwis loewis at informatik.hu-berlin.de
Fri Oct 18 05:15:02 EDT 2002


"Bartolomé Sintes Marco" <BartolomeSintes at ono.com> writes:

> I understand that Python is not to "blame", but Windows. So,
> is it not possible to have the same output in a command line windows
> and in a GUI window?

Difficult. http://python.org/sf/612627 is a patch that makes
sys.stdout accept Unicode strings on printing, and converts it into
the encoding of the terminal.

At the moment, you have the following options:
A. Change the code page in the console with the chcp.exe. This requires to set
   the console font to Lucida Console (or another Unicode font).
B. Always use Unicode to represent strings with accented
   characters. On printing them, determine the encoding of the output
   stream yourself:

   if sys.stdout.isatty() and isinstance(sys.stdout,file):
     # console. Unfortunately, there is no way to find out the encoding of
     # the console. You could try to parse the output of chcp.
     encoding = "cp850"
   else:
     encoding = "mbcs"

   Then encode the string with encoding, and put it onto sys.stdout.

HTH,
Martin



More information about the Python-list mailing list