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 :

encoding, charset dans les sources


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Par défaut encoding, charset dans les sources
    Hello

    la question est simple: comment peut-on déterminer l'encodage des sources du programme?

    un exemple de début de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/python
    # -*- coding: iso-8859-15 -*-
     
    import sys
    print sys.getdefaultencoding() # résultat = "ascii"
     
    print ??? Quelle fonction pour obtenir "iso-8859-15" qui est précisé ci-dessus dans "coding" ???
    j'ai bien trouvé: sys.getdefaultencoding() mais cela n'affiche pas le charset "iso-8859-15" indiqué au début de la source!

    alors, alors, quelle fonction magique à appeler pour obtenir la bonne réponse dans mon exemple?

    merci à tous

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    est ce indiscret de te demander pourquoi tu veux récupérer cet encodage ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut
    Avec idle je n'entre pas ces deux première lignes, il me les propose lors d'un de la sauvegarde. je laisse faire.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Par défaut
    Citation Envoyé par anthyme Voir le message
    est ce indiscret de te demander pourquoi tu veux récupérer cet encodage ?
    non, c'est juste que j'ai des applications qui doivent fonctionner dans des milieux très différents et dont les charset des fichiers programmes (sources) sont différents pour des raisons historiques, ainsi j'ai des machines et des bases de données dont les messages sont en iso-8859-15 et d'autres en utf8

    cela ne me dérange absolument pas, mais par contre cela me cause des problèmes lorsque les messages qui ne sont pas en unicode sont expédiés vers une base de données.

    au final il est enregistré des scribouilles, alors que si l'encodage est connu, hop une conversion et cela règle le problème.

    sinon, en quoi le fait de savoir "le pourquoi" cela aiderait à me donner la réponse à ma question?

    pour mémoire, la question est comment connaitre le charset de la source (fichier.py), sachant que la plus part du temps il est déclaré dans la 2ème ligne du fichier?

    d'avance un grand merci.

  5. #5
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Citation Envoyé par jean-jacques varvenne Voir le message
    sinon, en quoi le fait de savoir "le pourquoi" cela aiderait à me donner la réponse à ma question?

    pour mémoire, la question est comment connaitre le charset de la source (fichier.py), sachant que la plus part du temps il est déclaré dans la 2ème ligne du fichier?
    Simplement pour avoir le vrai probleme et essayer de trouver une solution a ce probleme via d'autres posibilités... (car je ne pense pas que tu vas dans la bonne direction)

    En effet cet encodage est uniquement un marqueur qui permet a python de pouvoir lire les fichiers sources convenablement et normalement si tu veux envoyer de l'utf8 dans ta bdd, tu peux utiliser des chaines u'...' qui fonctionneront quelque soit l'encoding spécifié a condition d'avoir taper ce text en utf8 dans les fichier avec coding:utf8, en iso avec les fichier coding:iso ...

    si tu n'y arrive vraiment pas, sache que les données transportées dans l'application ne vont pas se "desencoder" en fonction des modules dans lequel ils passent donc tu peux à la rigueur réencoder en utf8 les fichier qui posent probleme...
    Un bon moyen d'éviter ce genre de probleme est d'utiliser un bon editeur python qui gere bien les encodage par exemple pydev change l'encodage de la fenetre qui affiche le code en fonction du coding que tu met en tete de fichier et donc tu vois tout de suite si il y a un probleme d'encodage car tu le vois dans le code

    bon courage !

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Par défaut
    mettre un "u" sur toutes les chaines c'est déjà fait.

    bon manifestement, il n'y a aucune fonction qui permet de déterminer le charset de la source.

    tant pis...

  7. #7
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    module = open('monmodule.py').read()
    try:
        coding = module.split("-*-")[1].split(':')[1].strip()
        print "encodage: %s" % coding
    except:
        print "encodage inconnu"
    C'est un rien barbare, je sais

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

Discussions similaires

  1. [Debugger] Plus de suivie dans les sources
    Par nebule dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 02/06/2008, 17h55
  2. pas de "SDL_image.h" dans les sources
    Par Jérémy Lefevre dans le forum SDL
    Réponses: 6
    Dernier message: 15/05/2007, 17h01
  3. java.comm: inclure un JRE dans les sources logiciel?
    Par ccedced dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 07/03/2007, 15h16
  4. Recherche dans les sources
    Par michel baily dans le forum Delphi
    Réponses: 2
    Dernier message: 19/02/2007, 19h34

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