Rechercher : dans
Par :

[Python] accents avec wxPython - utf8 ?

Dernière réponse le 15 jui 2009 à 19:25:26 MyDomDom, le 1 jun 2007 à 16:28:23 
 Signaler ce message aux modérateurs

Bonjour,

Je ne suis qu'un modeste amateur de python et wxpython, avec de grosses lacunes...
Malgré mes recherches sur le net et mes tentatives de codages (très) nombreuses, je ne parviens pas à TOUJOURS faire apparaitre correctement les accents sur mon appli écrite en wxpython.
J'ai bien lu le tuto de sebsauvage et bien d'autres mais ça ne passe pas toujours, notamment à l'intérieur de certains controles de wx (problèmes que j'ai du mal à reproduire).
Je précise que je suis sous Mac OS X (ou Win XP), python 2.5.1, wxpython 2.8.4.0 Unicode pour py2.5.

Je mets #-*- coding: utf-8 -*- au début de chaque fichier et un u devant les "".
Est-ce bien comme cela qu'il faut que je fasse ?

Merci d'avance
Dominique

Configuration: Mac OS X
Firefox 2.0

Meilleures réponses pour « [Python] accents avec wxPython utf8 ? » dans :
Utiliser des accents et autres caractères spéciaux VoirDans la plupart des langages de programmation, on ne peut utiliser directement les accents et autres caractères non-anglosaxon. La solution est l'unicode, une sorte de code universel. Par exemple pour afficher la chaine de caractères : " là, ça...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Votre première application graphique avec Python et Glade VoirCe guide vous aidera à créer pas à pas votre première application graphique. Nous allons utiliser le langage de programme Python et l'API graphique GTK, en utilisant le logiciel Glade pour créer facilement les interfaces graphiques. C'est de la...
Télécharger Accent Excel Password Recovery VoirAccent Excel Password Recovery est un récupérateur de mots de passe pour fichier excel. Fini donc les mots de passe oubliés ou perdus. Sa particularité est d'utiliser des algorithmes permettant la récupération du mot de passe : - Soit l'algorithme de...

1

sebsauvage, le 1 jun 2007 à 17:16:55

Est-ce bien comme cela qu'il faut que je fasse ?

Tout à fait !

C'est très bien d'utiliser Unicode de bout en bout dans tes développements.

NB: Le source n'a pas à être obligatoirement en utf-8. Perso je met mes sources en iso-8859-1.



Sous MacOS X je ne sais pas, mais je n'ai aucun problème pour afficher les accents sous Windows (XP) et Linux (Ubuntu 7.04);

Si je prend l'appli d'exemple http://www.sebsauvage.net/python/gui/simpleapp_wx.py
Je peux entrer des accents, et ils sont correctement affichés dans le label.

Est-ce que les accents s'affichent aussi correctement chez toi avec ce programme ?



Note: il n'est pas impossible que certains widgets de wxPython ne gèrent pas correctement l'Unicode.

Répondre à sebsauvage

2

MyDomDom, le 1 jun 2007 à 18:47:01

Seb,
Je te dirai lundi (le mac est au boulot!). Chez moi, sous XP, tout passe.
Merci de ta réponse, rapide en plus, et de toutes tes pages web.
Je suis sûr que plein de gens comme moi s'en servent régulièrement, sans jamais un merci.
Alors merci de faire profiter les autres de tes bons conseils.
Quand on apprend tout seul comme je l'ai fait, heureusement qu'il y a des gens comme toi pour aider parce que j'en ai passé des heures à ramer....
J'arrête le cirage, on va croire que c'est toi qui fait les questions et les réponses.... Mais c'est sincère.

Je reviens lundi pour conclure sur cette discussion
Merci
Dominique

Répondre à MyDomDom

3

sebsauvage, le 1 jun 2007 à 20:09:42

:-)

De rien.



Je suis sûr que plein de gens comme moi s'en servent régulièrement, sans jamais un merci.

Les quelques mercis qu'on reçoit compensent ceux qui manquent :-)

Répondre à sebsauvage

4

MyDomDom, le 4 jun 2007 à 15:15:47

Seb / Tous,

C'est ok. Ca marche aussi sur mac.
Je n'ai plus (pour l'instant du moins) de différence de rendu pc mac.

Conclusion pour ceux qui auraient à gérer les accents:

1/On code le fichier en iso8859-1 ou utf8 sur 1 des 2 premières lignes:
# -*- coding: utf-8 -*-

2/ On gère TOUTES les strings avec un u devant pour éviter les conflits:
maStringUnicode=u" ceci est un test: éèàç"

3/ Quand on a à utiliser des vraies strings non unicodes (par ex pour des "".join() ...), on prend la string unicode et on la recode en ascii:
maStringAscii=maStringUnicode.encode('iso-8859-1')

4/ On la remet en unicode avec:
maStringUnicode=maStringAscii.decode('iso-8859-1')

Voilà.
Pas dur, mais quand on ne sait pas, ce n'est pas facile

Grand Merci à Seb
Dominique

Répondre à MyDomDom

5

MyDomDom, le 4 jun 2007 à 15:45:10
  • +1

Petit code au cas où:

# -*- coding: utf-8 -*-

maStringUnicode=u'Ceci est un test: é è à ç § & '
print maStringUnicode, type(maStringUnicode)

maStringAscii=maStringUnicode.encode('iso-8859-1')
print maStringAscii, type(maStringAscii)

maStringUnicode=maStringAscii.decode('iso-8859-1')
print maStringUnicode, type(maStringUnicode)

# Si on a un int
monInt=5
print monInt,type(monInt)
print 'Est-ce un int ? ',isinstance(monInt,int)
monInt=str(monInt).decode('iso-8859-1')
print 'Est-ce encore un int ? ',isinstance(monInt,int), '.C\'est un ',type(monInt)


Ciao
Dominique

Répondre à MyDomDom

7

 yeahyeah, le 15 jui 2009 à 19:25:26

Merci merci merci

Répondre à yeahyeah

6

sebsauvage, le 4 jun 2007 à 23:10:58

Merci du retour.

Répondre à sebsauvage