Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Problème d'encodage des caractères

Accents et caractères spéciaux passent mal.

    21 octobre 2006 à 22:41:36

    Bonjour,

    J'ai un petit problème d'encodage des caractères avec Python, en effet les caractères accentués et spéciaux ne passent pas dans certains cas de figure, malgré la présence du pseudo-commentaire en début de fichier indiquant le bon encodage à employer.
    Voici deux exemples de ces cas :

    #! /usr/bin/env python
    # -*- coding: Utf-8 -*-

    liste = ["Janvier", "Février", "Mars"]
    print liste


    me donne à l'exécution :

    ['Janvier', 'F\xc3\xa9vrier', 'Mars']


    De même, ce code permet d'inverser une chaîne de caractères :

    #! /usr/bin/env python
    # -*- coding: Utf-8 -*-

    print "Inverser la chaîne de caractères suivante :"
    text = "Éléphant"               # texte initial
    textInv = ""                    # texte inversé
    i = len(text)
    while i > 0:
            i = i - 1
            textInv = textInv + text[i]
    print "->", text, "\n->", textInv


    Et voici ce que j'ai dans ma console :

    Inverser la chaîne de caractères suivante :
    -> Éléphant
    -> tnahp��l�

    (En réalité ce sont des petits points d'interrogation, et non des "&#65533" - ils ne passent pas dans mon message.)

    Cependant, lorsqu'il s'agit uniquement d'une simple chaîne de caractères, tout va bien :

    #! /usr/bin/env python
    # -*- coding: Utf-8 -*-

    texte = "Éléphant"
    print texte


    Ma console m'affiche correctement la variable :

    Éléphant


    Note : OUI, mon système d'exploitation est bien en UTF-8 (J'utilise Ubuntu Linux).
    Quelqu'un a une idée ?
    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      22 octobre 2006 à 9:20:24

      Tu indiques en haut de ton code que c'est un fichier Utf-8. Tu as bien réglé ton éditeur en UTF-8 ?
      Sinon, tu devrais soit passer en UTF-8, soit trouver la ligne qui indique que le fichier est en iso-88579-15, afin que cette ligne de commentaire soit en cohérence avec l'encodage réel du fichier.

      edit : autre possibilité : tout est bien en UTF8, mais ta console ne le supporte pas, et donc tu dois passer en ISO.
      • Partager sur Facebook
      • Partager sur Twitter
        22 octobre 2006 à 10:40:38

        Merci de ta réponse, mais hélas j'ai toujous mon problème.
        Mon éditeur de texte est vim, et je n'ai pas touché à l'encodage.
        J'ai aussi essayé avec nano et gedit (qui est explicitement réglé en Utf-8), et le résultat est le même.
        Mon terminal est gnome-terminal, lui aussi réglé en utf-8

        De plus, je pense que les fichiers sont bien encodés en utf-8 car lorsque je bascule gnome-terminal en ISO-8-8859-1, j'ai droit à des "©" et des "Ã" en pagaille.
        Pour finir, lorsque je fais du C (avec le même éditeur et le même terminal), aucun problème.

        Donc je pense que le problème vient de python en lui même, vu qu'il affiche correctement les caractères dans certains cas... :o
        • Partager sur Facebook
        • Partager sur Twitter
          22 octobre 2006 à 10:45:19

          Tu as la 2.4 ?
          (sinon, met à jour et re-teste)
          • Partager sur Facebook
          • Partager sur Twitter
            22 octobre 2006 à 11:33:14

            J'ai Python 2.4.3, soit la dernière version proposée dans mes dépôts.
            Je viens d'installer une version antérieure (la 2.3.5) pour tester, le problème est le même.
            • Partager sur Facebook
            • Partager sur Twitter
              23 octobre 2006 à 22:38:37

              remplace Utf-8 par utf-8, je ne sais pas si ca change qqchose mais bon...
              • Partager sur Facebook
              • Partager sur Twitter
                26 octobre 2006 à 18:00:48

                Perso j'ai le même probleme alors j'utilise

                #-*- coding:Latin1 -*-


                Et ça marche puor les accents et tout ;) .
                • Partager sur Facebook
                • Partager sur Twitter
                ~( ・   ω   ・)~

                [Python] Problème d'encodage des caractères

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown