Forum Programmation.python problèmes d'accents avec wxPython

Posté par  .
Étiquettes : aucune
0
30
août
2004
Bonjour,

J'ai de sérieux soucis d'accents avec wxPython 2.5.2.7 quand les accents sont directement dans les fichier Python (quand ceux-ci se trouvent dans mes fichiers XRC je n'ai aucun soucis).

Quand je fait ceci sous XP, cela fonctionne parfaitement :
self.id_label.SetLabel('éè')

Mais sous Win2000, j'ai cette erreur :
File "C:\PYTHON23\Lib\site-packages\wx\_core.py", line 8406, in SetLabel
return _core_.Control_SetLabel(*args, **kwargs)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)

Je ne comprend pas pourquoi ça fonctionne sous XP et pas sous 2000 ... (je crois que les accents ne fonctionne pas non plus sous linux). Quelqu'un a une idée ?

J'ai quand même remarqué qu'en forçant la chaîne en unicode (u'éè'), plus aucun problème.
Seulement, il me semble qu'il n'y a pas de support de l'unicode dans la version wxPython pour MAC, or j'aimerais bien rester compatible avec cette plateforme.

Y'a-t-il un moyen de stocker les chaînes accentuées hors du fichier python dans un format qui soit directement lisible par wxPython (une sorte de fichier ressource pour les chaînes de caractères) pour m'éviter d'utiliser de l'unicode ? car je le rappelle, les chaînes accentuées dans mes fichiers XRC sont parfaitement affichées.

Merci de toute l'aide que vous pourriez m'apporter.

Note : la cible du programme est windows, avec si possible linux et mac.
  • # Et en précisant l'encodage ?

    Posté par  . Évalué à 2.

    J'ai moi aussi des soucis avec les accents, python et wxPython. en utilisant ceci :
    http://www.python.org/peps/pep-0263.html(...)

    je n'ai plus de problèmes. (J'ai quand même mis 2 poignés de poudre verte au cas où)
    • [^] # Re: Et en précisant l'encodage ?

      Posté par  . Évalué à 1.

      Chacun de mes fichiers commence par :
      # -*- coding: iso-8859-1 -*-

      Le même fichier marche sous XP mais pas sous 2000 .....
      En plus je ne pense pas que le problème viennent de Python par lui-même puisque les "print" et autre f.write() fonctionnent très bien.

      Je crois que le souci vient de wxWidgets qui gère de façon désastreuse les caractères autres que ceux de cette chère langue Anglaise. Où alors y'a un truc que j'ai raté ...

      J'ai testé en transformant mon ficheir en UTF8 et en mettant :
      # -*- coding: utf-8 -*-
      La ça marche très bien, mais je suppose qu'en faisant ça, j'utilise les caractèristiques unicode de WxPython, non ?
      • [^] # Re: Et en précisant l'encodage ?

        Posté par  . Évalué à 2.

        J'avoue que je dois en être a peu près au même niveau que toi à ce niveau là, à la différence que moi, je fais mes développements en utf8.

        J'ai moi aussi des problèmes d'affichage des accents avec wxPython, par exemple, j'utilise wxglage pour générer les fichiers d'interface (.py) et je n'arrive pas à afficher correctement les accents sous windows (des fichiers générés).

        Bref, c'est pas vraiment facile à gérer.

        J'ai lu un article qui parlait de ce problème et il me semble qu'ils conseillent d'utiliser Gettext pour ne placer que des chaines 'ascii' dans le code et de lacer les caractères accentués dans les fichiers .po.

        Je n'ai pas le temps de tester pour l'instant mais je vais le faire, je ferai signe ici si j'y pense :)

        Ceci dis, ton problème est quand même étonnant, bizarre que ça marche pas sur 2000 alors que ça marche sur XP.

        Juste comme ça, tu utilises un wxpython en unicode ? sur les 2 plateformes ?
        • [^] # Re: Et en précisant l'encodage ?

          Posté par  . Évalué à 1.

          oui j'utilise la dernière version de wxPython en unicode, et c'est la même sur les 2 machines.

          Ceci dis, ton problème est quand même étonnant, bizarre que ça marche pas sur 2000 alors que ça marche sur XP.
          J'te l'fais pas dire :) Si quelqu'un trouve le pourquoi de la chose, il aura le droit à toute ma reconnaissance.
          Et pour gettext, je trouve ça lourd a gérer pour les 10 chaines de mon application.
          M'enfin ... je crois que je vais devoir me résigner à utiliser l'unicode.

          Merci de ton aide (désolé je peux pas te plussoyer, j'ai pas d'XP machin truc ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.