UTF-8 Support of Curses in Python 2.5

Andrey stingo000 at yahoo.ca
Sun Jul 22 00:57:28 CEST 2007


Yes, it does solve the problem.
Compile python with ncursesw library.
Btw Ubuntu 7 has it "out of the box".


> Hi All,
> 
> Recently I ran into a problem with UTF-8 surrport when using curses
> library in python 2.5 in Fedora 7. I found out that the program using
> curses cannot print out unicode characters correctly on UTF-8 enabled
> console. I googled around and got an impression that the reason for
> this problem is that python is linked with libcurses library instead
> of libcursesw. The latter one is said to be able to solve this
> problem. Has anybody tried this? How to manually let python use
> libcursesw? Thanks a lot!
> 
> Here is a test program:
> 
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
> import curses
> def keyloop(stdscr):
>     # Clear the screen and display the menu of keys
>     stdscr_y, stdscr_x = stdscr.getmaxyx()
>     menu_y = (stdscr_y-3)-1
>     str = u'This is my first curses python program. Press \'q\' to
> exit. (¤£™)'
>     stdscr.addstr(menu_y, 4, str.encode('utf-8'))
>     xpos = stdscr_x / 2
>     ypos = stdscr_y / 2
>     while (1):
>         stdscr.move(ypos, xpos)
>         c = stdscr.getch()
>         if 0 < c < 256:
>             c = chr(c)
>             if c in 'Qq': break
>             else: pass
>         elif c == curses.KEY_UP and ypos > 0:               ypos -= 1
>         elif c == curses.KEY_DOWN and ypos < stdscr_y - 1:  ypos += 1
>         elif c == curses.KEY_LEFT and xpos > 0:             xpos -= 1
>         elif c == curses.KEY_RIGHT and xpos < stdscr_x - 1: xpos += 1
>         else: pass
> def main(stdscr):
>     keyloop(stdscr)
> if __name__ == '__main__':
>     curses.wrapper(main)




More information about the Python-list mailing list