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 :

Encodage accent dans les dates


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Par défaut Encodage accent dans les dates
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dat = dat.strftime("%d %B %Y à %H:%M")
    Ca fonctionne mais les accents retourné par %B me donne
    arrivé le : 13 dꤥmbre 2007 à 11:26
    où le ? est remplacé par un petit carré.
    Les autres accents dans le texte sortent bien.
    L'encodage est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding:iso-8859-15 -*-
    Mais lors de l'exécution hors Scite le résultat est différent :
    arrivé le : 13 décembre 2007 à 11:26

    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Essaye de mettre le codage en UTF8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: utf-8 -*-

  3. #3
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Par défaut
    Ca ne change rien

  4. #4
    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
    Le problème vient de l'affichage dans la console, pas de l'encodage du fichier.
    Apparemment, sous windows, point de salut, hormis:
    • se passer des accents,
    • créer une IHM.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Citation Envoyé par pacificator Voir le message
    Le problème vient de l'affichage dans la console, pas de l'encodage du fichier.
    Faux. Sinon les deux "é" seraient affichés de la même façon. Or ce n'est pas le cas. Dans SciTE ton affichage est en utf-8 et hors SciTE il est en iso-8859-1. Essaye de jouer avec les encodages pour harmoniser le tout.

  6. #6
    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,

    Ces pb d'encodage sont un vrai casse-tête.

    Avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/python
    # -*- coding: iso-8859-15 -*-
     
    import locale
    import time
     
    locale.setlocale(locale.LC_TIME,'')
     
    print time.strftime("%d %B %Y à  %H:%M")
    J'obtiens bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    29 février 2008 à  19:38
    avec idle et easyeclipse sous Windows XP. Mais pas sous la console DOS.

    Tyrtamos

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Normal, la console DOS utilise un encodage exotique (cp858 je crois)

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Ceci fonctionne chez moi, en console et dans IDLE... Mais il doit y avoir plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # -*- coding: iso-8859-15 -*-
     
    import locale
    import time
    import sys
     
    locale.setlocale(locale.LC_TIME,'')
     
    def transcoder(in_codec, out_codec):
        def transcode(s):
            return s.decode(in_codec).encode(out_codec)
        return transcode
     
    _t = transcoder('iso8859-15',sys.stdout.encoding)
     
    print _t(time.strftime("%d %B %Y à  %H:%M"))

  9. #9
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Par défaut
    Merci à vous pour vos commentaires. Mais hélas, ce soir je suis sous linux et j'ai toujours le même problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arrivé le : 13 décembre 2007 à 16:19

  10. #10
    Membre averti
    Inscrit en
    Février 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 29
    Par défaut
    Citation Envoyé par dividee Voir le message
    Ceci fonctionne chez moi, en console et dans IDLE... Mais il doit y avoir plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # -*- coding: iso-8859-15 -*-
     
    import locale
    import time
    import sys
     
    locale.setlocale(locale.LC_TIME,'')
     
    def transcoder(in_codec, out_codec):
        def transcode(s):
            return s.decode(in_codec).encode(out_codec)
        return transcode
     
    _t = transcoder('iso8859-15',sys.stdout.encoding)
     
    print _t(time.strftime("%d %B %Y à  %H:%M"))

    merci pour votre réponse elle marche à la perfection même pour d'autre cas.
    mais j'ai un problème j'utilise pythomnic (sous console dos qui utilise des scripts python qui permet d'envoyer des messges sous le protocole SMPP)
    en utilisant ce programme pour écrire dans un fichier , il m'écrit toujuors ? au lieu de é...

    merci

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Bonjour,

    quelques remarques:
    • strftime retourne une chaine encodée. Pour la décoder en unicode, utiliser le coding donnée par getdefaultlocale (ce n'est pas forcement 8859-15)
    • pour windows, on peut obtenir le coding avec chcp
    • pour Linux, je ne sais pas. Mais je suis sur qu'on peut l'avoir?
    • quand on écrit dans un fichier, il faut que l'éditeur connaisse l'encodage, donc plutôt utf-8 par exemple pour notepad.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import subprocess
    subprocess.call('cmd /C chcp')
     
    import locale
    import time
    locale.setlocale(locale.LC_TIME,'FR')  
    lang,coding=locale.getdefaultlocale()
    u=time.strftime(u"%d %B %Y",(10,12,10,0,0,0,0,0,0))
    print u.decode(coding).encode('850')
    ## avec le transcoder de dividee:
    _t = transcoder(coding,'cp850')

Discussions similaires

  1. [javascript] accents dans les message "alert&q
    Par logica dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/07/2008, 10h08
  2. Accent dans les champs
    Par Alexlesilex dans le forum Installation
    Réponses: 10
    Dernier message: 17/05/2006, 13h15
  3. [LDAP] Problèmes d'accent dans les valeurs
    Par Jack_le_Boulet dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 28/04/2006, 20h56
  4. Extraire les semaines dans les dates
    Par LE CORRE dans le forum C
    Réponses: 4
    Dernier message: 22/02/2006, 12h34
  5. [XML] Accent dans les noms de balises
    Par virgul dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/03/2005, 13h42

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