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 :

Problème affichage caractères non ASCII [Python 2.X]


Sujet :

Python

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut Problème affichage caractères non ASCII
    Bonjour,

    Voilà j'essaie de faire une entête dans mon code afin qu'elle soit affichée lorsque mon programme est lancé dans un terminal (Mac OSX, Linux).

    Cependant j'obtient un message d'erreur que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SyntaxError: Non-ASCII character '\xe2' in file boolean_v1.3.3.py on line 26, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
    J'ai été faire un tour sur le site mentionné, mais j'ai pas trouvé l'encodage que je fois utiliser.

    Voici ce que j'essaie de faire afficher :

    http://patorjk.com/software/taag/#p=...w&t=Boolean%0A

    Désolé mais pas moyen de l'insérer dans le forum.

    Une idée de l'encodage que je dois utiliser ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    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 : 3 823
    Points : 7 119
    Points
    7 119
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Merci de ta réponse.

    J'aurai dû préciser que j'avais justement essayé d'utiliser cet encodage, mais cela ne résoud pas mon problème.

    Pensez vous qu'au vue des caractères utilisés cela est simplement un problème d'encodage ?

    Ci dessous le début de mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #----------------------------------------------------------ENCODING------------------------------------------------------#
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # -*- coding: iso-8859-1 -*-
    #-----------------------------------------------------------MODULE-------------------------------------------------------#
    import sys
    import time
    #-----------------------------------------------------------HEADER-------------------------------------------------------#
    Merci d'avance pour vos réponse et votre aide.

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # -*- coding: utf-8 -*-
    # -*- coding: iso-8859-1 -*-
    Ça ne va pas: il n'en faut qu'un seul, et le bon. Il est d'ailleurs probable que quand il y en a plusieurs, seul le dernier compte.

    Ces coding ne servent qu'à une chose: dire à Python comment il faut lire les chaines codées en dur (genre: "éèçàùôï") dans le code du programme. A l'exécution du programme, si le coding est "utf-8", alors la chaine de caractères en mémoire sera lue comme étant encodée "utf-8". Comme on est sous Python 2, elle restera en utf-8 en mémoire. Toujours sous Python 2, si on met un 'u' devant le 1er guillemet (comme: u"éèçàùôï"), Python convertira la chaine en unicode à partir de l'utf-8. Il est d'ailleurs généralement conseillé de travailler en unicode avec Python 2.

    Bien sûr, pour que ça marche, il faut que le code du programme ait été enregistré en utf-8! Voir pour cela l'éditeur de texte utilisé.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Relisez le PEP 263, "coding" doit être placé à la première ou à la deuxième ligne du script - si la première est "#!/usr/bin/python".
    => virez la première ligne de commentaires!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 54
    Points : 98
    Points
    98
    Par défaut re
    essaye de mettre ce code en première ligne : pour moi ça a marché ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- encoding: iso-8859-15 -*-

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 54
    Points : 98
    Points
    98
    Par défaut re
    Citation Envoyé par nekcorp Voir le message

    Une idée de l'encodage que je dois utiliser ?
    il y a le module encoding(s) (je ne sais plus s'il y a un "s" ou pas au nom du module je suis sous python 3.3 ...) tu trouveras sûrement le type d'encodage à l'intérieur

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par bosskev62 Voir le message
    essaye de mettre ce code en première ligne : pour moi ça a marché ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- encoding: iso-8859-15 -*-
    Le mot-clé magique est "coding" et non "encoding". Ce dernier fonctionne car le PEP dit:

    More precisely, the first or second line must match the regular
    expression "coding[:=]\s*([-\w.]+)". The first group of this
    expression is then interpreted as encoding name
    .

    Après, tout dépend de ce que supporte l'éditeur car, comme le faisait remarquer Tyrtamos, cette ligne doit être d'abord interprétée par l'éditeur pour sauvegarder le fichier avec l'encoding mentionné pour permettre à l'interpréteur de le "decoder", plus tard.
    Citation Envoyé par bosskev62 Voir le message
    Citation Envoyé par nekcorp
    Une idée de l'encodage que je dois utiliser ?
    il y a le module encoding(s) (je ne sais plus s'il y a un "s" ou pas au nom du module je suis sous python 3.3 ...) tu trouveras sûrement le type d'encodage à l'intérieur
    "iso-8859-15" autrement dit "latin-9" est la variante de "iso-8859-1" (appelé "latin-1") avec le signe monétaire de l'Euro fonctionnent. "utf-8" devrait aussi fonctionner d'autant mieux que vous travaillez sous Linux.
    De toutes façons, si vous mettez n'importe quoi comme encoding, l'éditeur et/ou l'interpréteur Python vont raler....

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Merci à tous pour vos réponses.

    J'ai résolu mon problème en mettant l'encodage au début du fichier, chose que je n'avais pas fais effectivement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #----------------------------------------------------------ENCODING------------------------------------------------------#
    # -*- coding: utf-8 -*-
    #-----------------------------------------------------------HEADER-------------------------------------------------------#
    encore merci

  10. #10
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    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 : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    chose que je n'avais pas fais effectivement
    Et qui était pourtant bien spécifié dans le lien que je t'ai donné
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Et qui était pourtant bien spécifié dans le lien que je t'ai donné
    Bah, il l'avait fait...
    Mais le début du fichier se restreint, dans ce cas, aux 2 premières lignes.
    Le souci est plutôt dans l'ajout de commentaires qui n'apportent pas grand chose d'autre que montrer qu'on a bien commenté son code.
    La qualité du code peut être fonction du nombre de lignes de commentaire par ligne de code lorsqu'on programme en assembleur. Avec un langage comme Python, on peut s'en passer sauf à vouloir écrire un tuto. dans le code.

    note: "fonctionnellement" garder la ligne"#!/usr/bin/python" est plus intéressant.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. [HTML 4.0] Affichages de caractères non-ASCII
    Par frederic_dev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 21
    Dernier message: 21/02/2009, 18h59
  2. Réponses: 3
    Dernier message: 08/02/2008, 19h34
  3. Détecter des caractères non-ASCII
    Par gvdmoort dans le forum Ruby
    Réponses: 2
    Dernier message: 27/01/2008, 13h16
  4. [MySQL] Problèmes affichages caractères spéciaux
    Par jim1 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/04/2007, 15h01
  5. Problème de caractères non latin dans un formulaire
    Par Huntress dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2006, 13h34

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