console unicode

console unicode - Python - Programmation

Marsh Posté le 23-03-2008 à 17:57:05    

Bonjour,
 
j'aimerais créer un petit utilitaire en mode console qui afficherait des glyphes unicode. La libraire curses me paraissait très bien, mais elle stocke tous les caractères sur un octet et refuse donc l'immense majorité des glyphes que je voulais afficher. Auriez-vous une idée sur la manière de contourner ce problème ?
 
Merci d'avance !


---------------
rule #1 : trust the python
Reply

Marsh Posté le 23-03-2008 à 17:57:05   

Reply

Marsh Posté le 23-03-2008 à 18:02:14    

Bon, apparamment il faut que mon Python soit linké avec ncursesw et non avec ncurses. Dois-je le recompiler ?


---------------
rule #1 : trust the python
Reply

Marsh Posté le 23-03-2008 à 19:10:05    

Ok, j'ai recompilé Python 2.5.2 avec ncursesw (en modifiant setup.py et en forçant le link). Le code suivant fonctionne correctement :
 

Code :
  1. import curses, locale
  2. locale.setlocale(locale.LC_ALL, '')
  3. s = curses.initscr()
  4. s.addstr(u'\u00c5 U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE\n'.encode('utf-8') )
  5. s.addstr(u'\u00f5 U+00F5 LATIN SMALL LETTER O WITH TILDE\n'.encode('utf-8'))
  6. s.refresh()
  7. s.getstr()
  8. curses.endwin()


 
... mais j'aimerais anticiper la sortie de Python 3000 et là, rien à faire. Python 3.0a3 linke bien avec ncursesw mais le code suivant :
 

Code :
  1. import curses, locale
  2. locale.setlocale(locale.LC_ALL, '')
  3. s = curses.initscr()
  4. s.addstr('\u00c5 U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE\n' )
  5. s.addstr('\u00f5 U+00F5 LATIN SMALL LETTER O WITH TILDE\n' )
  6. s.refresh()
  7. s.getstr()
  8. curses.endwin()


 
me jette avec un TypeError : str sur le premier s.addstr.


Message édité par suizokukan le 23-03-2008 à 19:15:11

---------------
rule #1 : trust the python
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed