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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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 confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 062

  3. #3
    Membre éclairé 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
    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 confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    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é.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 54
    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
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 54
    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

+ 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