IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python 2.2 et les accents


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Par défaut Python 2.2 et les accents
    Bonjour,
    Je découvre Python avec Python 2.2 sous Windows. Avec le module IDLE quand je fais print "dépasse", il renvoie l'erreur : UnicodeError: ASCII encoding error: ordinal not in range(128)
    sans accent ça passe très bien
    Comment lui faire accepter un code au delà de 128, si je comprend bien
    je suis sous Windows ME et IDLE 0.8
    Merci à l'avance
    Bertrand

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 044
    Par défaut
    Passe tout d'abord à la version 2.5

  3. #3
    Invité
    Invité(e)
    Par défaut
    Il faut simplement écrire avec le jeu de caractère utilisé par ton terminal, la version 2.5 de Python n'est pas forcément obligatoire.

    Le codage utilisé s'obtient comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import sys
    print sys.stdout.encoding
    Et donc, pour ne pas avoir de problèmes d'accents, il faut travailler dans Python avec des chaînes unicode et, suivant la sortie, choisir le jeu de caractères adéquat (utf-8, latin-1, etc)

    Et donc, il faut écrire ton code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import sys
    print u"dépasse".encode(sys.stdout.encoding)
    (Pareil en lecture avec ".decode(...)")

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 044
    Par défaut
    Il faut simplement écrire avec le jeu de caractère utilisé par ton terminal, la version 2.5 de Python n'est pas forcément obligatoire.
    En effet, mais très fortement conseillé, c'est pas une nouvelle

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Kaji Voir le message
    Et donc, il faut écrire ton code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import sys
    print u"dépasse".encode(sys.stdout.encoding)
    (Pareil en lecture avec ".decode(...)")
    En fait, pour utiliser des caractères accentués, il faut spécifier en deuxième ligne du mdoule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/env python
    #-*- coding: windows-1252 -*-
     
    print "dépasse"
    Cela fonctionne sans problème avec IDLE. Sous une console Windows, c'est une autre histoire...

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Par défaut
    Bonsoir,
    j'étais frileux quant aux téléchargement de .msi de la version 2.5. J'ai trouvé Windows installer 2.0 puisque je suis en Windows ME et le msi de python 2.5 s'est installé : les accents sont ok avec la fameuse première ligne coding:Latin-1
    que j'ai trouvée dans le tuteur.
    Donc pour l'instant c'est résolu : je continue l'apprentissage.
    Merci à tous
    Bertrand

  7. #7
    Invité
    Invité(e)
    Par défaut FAQ Python
    Citation Envoyé par Thierry Chappuis Voir le message
    En fait, pour utiliser des caractères accentués, il faut spécifier en deuxième ligne du mdoule:
    Oui, le jeu de caractère du fichier doit toujours être spécifié en début de fichier, mais on peut choisir celui que l'on veut et quand même produire du code portable.

    Citation Envoyé par Thierry Chappuis Voir le message
    Cela fonctionne sans problème avec IDLE. Sous une console Windows, c'est une autre histoire...
    Cela fonctionne parce que vous utilisez le même jeu de caractère que la sortie...

    Le code suivant fonctionne avec n'importe quelle console de n'importe quel système d'exploiration, quel que soit son jeu de caractère (utf-8, cp1252, cp850, etc.), pourvu qu'il contienne le caractère "é" quelque part...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/env python
    #-*- coding: latin-1 -*-
     
    import sys
    print u"dépasse".encode( sys.stdout.encoding )
    C'est un peu plus lourd, mais c'est le prix à payer pour produire du code portable...

    Il existe peut-être d'autres solutions que je ne connais pas...

    Ce problème revient très souvent, il pourrait être ajouté dans la FAQ Python, non ?
    Dernière modification par Invité ; 21/09/2008 à 16h35. Motif: Idée FAQ

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Kaji Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/env python
    #-*- coding: latin-1 -*-
     
    import sys
    print u"dépasse".encode( sys.stdout.encoding )
    C'est un peu plus lourd, mais c'est le prix à payer pour produire du code portable...

    Il existe peut-être d'autres solutions que je ne connais pas...

    Ce problème revient très souvent, il pourrait être ajouté dans la FAQ Python, non ?
    Non, sur une émulateur de terminal tel que gnome-terminal, cela ne fonctionne que si on utilise l'encodage par défaut. Si l'utilisateur modifie cet encodage, ton n'est plus portable. Mais sur le fond, je suis d'accord. C'est la manière la plus portable de faire.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FoxPro]Instruction pour enlever les accents ?
    Par Fab-FoxPro dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 02/01/2025, 15h09
  2. [String] Comment supprimer les accents
    Par iuz dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 08/03/2004, 02h58
  3. [JDBC] Problème avec les accents
    Par seawolfm dans le forum Administration
    Réponses: 2
    Dernier message: 29/01/2004, 14h56
  4. les accents et printf
    Par remi77 dans le forum C
    Réponses: 5
    Dernier message: 07/07/2003, 20h53
  5. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo