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 :

charset utf-8 defaillant ?


Sujet :

Python

  1. #1
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut charset utf-8 defaillant ?
    Bonjour je suis débutant sous python et essaye de fixer le charset d'un script à UTF-8 sous linux mais rien n'y fait.

    Pour le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    print "é@à#"
    j'obtiens : é@Ã

    Quel est le problème ?

  2. #2
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    Ma question est mal posée, après lecture de quelques tutos...

    En fait je voudrais pouvoir sortir un string avec caractères accentués correctement sans code UTF ou diacritics ?

    Comment faire ?

  3. #3
    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
    C'est peut-être ton terminal qui n'est pas en UTF-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    print sys.stdout.encoding

  4. #4
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Par défaut
    Citation Envoyé par oiffrig Voir le message
    C'est peut-être ton terminal qui n'est pas en UTF-8
    Ou l'éditeur avec lequel il écrit ses scripts?

  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
    Moins probable.
    L'interpréteur affiche é pour é, donc il décode de l'utf-8 en latin-1 ou encodage similaire. La source est apparemment bien en utf-8, c'est le terminal qui ne l'est pas.

  6. #6
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    print sys.stdout.encoding
    >> UTF-8

    C'est probablement vim, alors ?

  7. #7
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    alors c'est une problème de charset linux ?

  8. #8
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    vi /etc/sysconfig/console

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CONSOLE_ENCODING="UTF-8"
    vi /etc/sysconfig/language

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RC_LANG="fr_FR.UTF-8"
    vi /etc/bash.bashrc.local

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    export LANG="fr_FR.UTF-8"
    export LC_MESSAGES=POSIX
    export LC_CTYPE="fr_FR.UTF-8"
    Je dois peut-etre rebooter

  9. #9
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    ... aucun changement

  10. #10
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Par défaut
    Es-tu en tty ou en terminal sous X?

  11. #11
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    en tty je crois avec putty ou cygwin

  12. #12
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Par défaut
    Tu utilises putty ou cygwin? Tu accèdes à un shell à distance ou bien tu utilises linux par dessus ton windows?

    Remarque: ton problème de codage de caractères n'est pas lié à Python, donc à ce stade là, c'est hors sujet.

  13. #13
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    j'ai le problème avec les deux. Je n'ai pas encore directement testé à la console de linux...

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 76
    Par défaut
    Salut,

    Je me suis moi-même pas mal pris la tête ces derniers jours avec des soucis d'encodages et à mon avis ça se passe moins dans l'éditeur que dans le codage utilisé pour ta page.

    Je te conseille la lecture de cette page, très instructive : http://sebsauvage.net/python/charsets_et_encoding.html

    Ensuite, dans ton cas, je verrais deux solutions.

    Soit tu changes le codage pour ton script python en spécifiant latin-1 aulieu de utf-8. Dans ce cas, lorsque tu utilises un print, il lui sera possible d'afficher le caractère. Ton script bug car tu spécifies un encodage utf-8 et essaie d'afficher des caractères latin-1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # -*- coding: latin-1 -*-
    print "é@à"
    # Affiche : é@à
    Maintenant, tu souhaites peut-être garder le codage utf-8 pour ton script. Il te faut donc passer de l'utf-8 au latin-1. On utilise les fonctions encode et decode en passant en paramètre le type d'encodage. Ca donne quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # -*- coding: utf-8 -*-
    print "é@à"    # Affiche : é@à 
    # Pour un affichage correct, on décode la chaine codée en utf-8, puis on 
    # encode le résultat en latin-1 pour permettre l'affichage des accents, entre
    # autres
    print "é@à".decode('utf-8').encode('latin-1')    # Affiche : é@à
    Au passage, la fonction repr est très utile pour te permettre d'afficher tout de même tes caractères, sans faire planter le print. Tu verras le codage de tes caractères ça peut aider ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # -*- coding: utf-8 -*-
    # Affiche : u'\xe9@\xe0', c'est-à-dire la représentation de é et à
    # en utf-8
    print repr ("é@à".decode('utf-8') )

  15. #15
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    merci pour ton post

    j'ai réussi à sortir ma chaine avec decodage et réencodage

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

Discussions similaires

  1. Problème de Charset UTF-8
    Par Lost In Translation dans le forum Apache
    Réponses: 3
    Dernier message: 30/10/2008, 18h08
  2. @charset "utf-8";, son utilité ?
    Par {F-I} dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 31/03/2008, 11h21
  3. Bonjour, JSP avec Charset UTF-8 Problème
    Par chakcc dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 12h45
  4. [XSLT] XML+XSL=HTML avec charset UTF-16
    Par Steph4fun dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/10/2006, 08h54
  5. [Conception] utf8_decode() ou charset=utf-8
    Par viny dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/09/2006, 18h13

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