Re: Windows XP unicode and escape sequences

2007-12-19 Thread Martin v. Löwis
> This brings up another question.  If I run some Python code that
> starts off with 'os.system('cp869')' so it will change to the correct
> code page, then when it starts printing the Greek characters it
> breaks.  But run the same Python code again and it works fine.  Is
> there another way to do this so I can change over to the 869 code
> page and continue on with the Greek letters printing correctly?

You'll have to call SetConsoleOutputCP (see MSDN). Python does not
directly expose that, so you'll have to use ctypes or PythonWin to
call it.

Regards,
Martin
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Windows XP unicode and escape sequences

2007-12-16 Thread Ross Ridge
<[EMAIL PROTECTED]> wrote:
>This brings up another question.  If I run some Python code that starts
>off with 'os.system('cp869')' so it will change to the correct code page,
>then when it starts printing the Greek characters it breaks.  But run
>the same Python code again and it works fine.

That's probably because the encoding of stdin, stdout, and stderr is set
according to the code page of the console they're connected to (if any)
when Python starts.

>Is there another way to do this so I can change over to the 869 code
>page and continue on with the Greek letters printing correctly?

Unfortunately, you can't easily change the encoding of file object after
it's been created.  It's probably simpler convert Unicode strings to cp869
before printing them instead of having Python do it automatically for you.

Ross Ridge

-- 
 l/  //   Ross Ridge -- The Great HTMU
[oo][oo]  [EMAIL PROTECTED]
-()-/()/  http://www.csclub.uwaterloo.ca/~rridge/ 
 db  //   
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Windows XP unicode and escape sequences

2007-12-16 Thread MonkeeSage
On Dec 16, 5:28 pm, <[EMAIL PROTECTED]> wrote:
> Thank you John and Tim.
>
> With your help I found that the XP console code page is set up for 'cp437' 
> and with a little bit of browsing I found that 869 is the code page for 
> Modern Greek.  After changing it to 869 that did the trick!  Thanks very much 
> for this advice.
>
> This brings up another question.  If I run some Python code that starts off 
> with 'os.system('cp869')' so it will change to the correct code page, then 
> when it starts printing the Greek characters it breaks.  But run the same 
> Python code again and it works fine.  Is there another way to do this so I 
> can change over to the 869 code page and continue on with the Greek letters 
> printing correctly?
>
> Thanks Tim for the info about the CONFIG.NT file as well as the curses-like 
> info.  I'll continue to research these.
>
> Thanks again!
>
> Jay
>
> > CONFIG.NT only affects 16-bit programs running in the NTVDM (the Virtual
> > DOS Machine).
> > 32-bit console apps (which Python is) simply cannot use ANSI escape
> > sequences.  You have to use the Win32 APIs to do color.  There are
> > curses-like libraries available for Python.  Or:
> >http://www.effbot.org/zone/console-handbook.htm
> > --
> > Tim Roberts, timr at probo.com
> > Providenza & Boekelheide, Inc.

Try using the unicode switch ( cmd.exe /u ), rather than trying to set
the codepage. See here:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true

Regards,
Jordan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Windows XP unicode and escape sequences

2007-12-14 Thread Tim Roberts
<[EMAIL PROTECTED]> wrote:

>I mainly work on OS X, but thought I'd experiment with some Python code on XP. 
> The 
>problem is I can't seem to get these things to work at all.
>
>First of all, I'd like to use Greek letters in the command prompt window, so I 
>was going to
>use unicode to do this.  But in the command prompt, the unicode characters are 
>displaying
>as strange looking characters.  I tried installing the 'Bitstream Vera Sans 
>Mono' font in hopes
>it had all the characters I needed but this didn't seem to work either.  Is 
>the problem the font?  
>And if so, is there a certain font that has unicode '03B1', etc?  Here's some 
>code I tried:

It's not the font.  (OK, it's partially the font.)  To display Greek
characters to the console, your console session has to be set for a code
page that includes Greek characters.

>The next problem I'm having is I can't seem to color the text with ansi escape 
>sequences.  I
>added "device=%SystemRoot%\system32\ansi.sys" to the bottom of the CONFIG.NT 
>file, and experimented with code like this:
>
>print chr(27) + "[36mTest" + chr(27) + "[0m"
>
>From what I found on-line, ascii character 27 seems to be the escape key I 
>need, but I can't
>seem to get it to work.  It just displays an arrow.

CONFIG.NT only affects 16-bit programs running in the NTVDM (the Virtual
DOS Machine).

32-bit console apps (which Python is) simply cannot use ANSI escape
sequences.  You have to use the Win32 APIs to do color.  There are
curses-like libraries available for Python.  Or:

http://www.effbot.org/zone/console-handbook.htm
-- 
Tim Roberts, [EMAIL PROTECTED]
Providenza & Boekelheide, Inc.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Windows XP unicode and escape sequences

2007-12-13 Thread John Roth
On Dec 12, 2:51 pm, <[EMAIL PROTECTED]> wrote:
> I mainly work on OS X, but thought I'd experiment with some Python code on 
> XP.  The
> problem is I can't seem to get these things to work at all.
>
> First of all, I'd like to use Greek letters in the command prompt window, so 
> I was going to
> use unicode to do this.  But in the command prompt, the unicode characters 
> are displaying
> as strange looking characters.  I tried installing the 'Bitstream Vera Sans 
> Mono' font in hopes
> it had all the characters I needed but this didn't seem to work either.  Is 
> the problem the font?
> And if so, is there a certain font that has unicode '03B1', etc?  Here's some 
> code I tried:
>
> v = u'\u03B1\u03B2\u03B3'.encode('utf-8')
> print v #just displays squares

You've got two problems. First, you don't need to encode it; if the
command prompt window displayed your output after encoding it would
display the multi-byte form of your characters. You should just send
it a unicode object.

Second, check the .encoding attribute of the sys.stdout object.
Therein lies enlightenment about what the command prompt window will
accept.

No info on your other problem.

John Roth

>
> If anyone has any thoughts, I'd love to hear them.
>
> Thanks!
>
> Jay

-- 
http://mail.python.org/mailman/listinfo/python-list