Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec l'encodage

    20 septembre 2014 à 16:09:32

    Bonjour à tous, je suis entrain de lire le tuto de phyton et j'ai eu un petit problème avec l'encodage..En effet quand j'ai du mettre le programme qui dit si une année est bissextile ou non, il y avait des accents dans le programme et plus précisément au niveau du print.

    j'ai bien mis la ligne qui change l'encodage en unicode et ça n'a pas marché.. voila une petite photo pour mieux comprendre:

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 septembre 2014 à 16:16:12

      Essaye de régler l'encodage de Notepad++ en Latin-1 en cliquant sur Encodage > Codages de caractères > Langues d'Europe occidentale > ISO 8859-1 (Latin-1 et ISO 8859-1 c'est pareil).
      • Partager sur Facebook
      • Partager sur Twitter
        20 septembre 2014 à 16:39:11

         Pour mettre l'encodage en unicode c'est:

        # -*- coding:Utf-8 -*-

        et pas latin-1

        Après, il te suffit, dans Notepad++, de faire : Encodage > Encoder en Utf-8

        Edit: sauf que ça ne changera rien, vu que c'est la console windows qui pose problème. Deux solutions se présentent à toi :

         - jeter la console windows o_O

         - encoder en     Utf-16 LE - BOM     , mais je ne sais pas si python sait le lire. Dans tous les cas, si tu fais ça et que tu es sous python 3, vire la ligne d'encodage ou essaye de mettre coding:Utf-16

        Je précise que je n'ai pas vérifié si cmd lisait l'Utf-16, j'ai cru sur parole ceci

        Edit 2:

        après une petite recherche, j'ai trouvé que cette commande cmd permettait de régler l'encodage de la console en Utf-8 :

        chcp 65001

        Tu peux soit ouvrir cmd, puis taper ça puis lancer ton programme python à partir de la console, soit rajouter ceci au début de ton code :

        import platform
        
        if platform.system() == "Windows":
            os.system("chcp 65001")

         Edit : après essais, python semble faire la conversion vers le bon encodage pour l'affichage en console, donc le problème n'est pas là

        -
        Edité par tatrats 20 septembre 2014 à 20:03:16

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 septembre 2014 à 17:56:49

          Surprenant avec Python 3.x d'avoir ce genre de soucis, quelque soit la console...

          Je testerais bien les lignes présentées ici

          • Partager sur Facebook
          • Partager sur Twitter
            20 septembre 2014 à 18:36:43

            Message supprimé : mieux vaut vérifier avant de dire des âneries ;)

            -
            Edité par tatrats 20 septembre 2014 à 20:01:37

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              20 septembre 2014 à 19:12:31

              Non, je pense que le problème c'est que son script est bel et bien encodé en UTF-8 mais qu'en ajoutant une mauvaise déclaration d'encodage Python l'interprète comme du latin-1 c'est pourquoi à l'affichage il y a ces deux caractères à la place du é unicode (codé sur deux bytes). La console n'y est pour rien ici.

              Script UTF-8 -> Python croit à du Latin-1 (parce qu'on lui fait croire) -> Python traduit le faut latin-1 en UTF-8 (fonctionnement interne de Python3, à ce moment là le mal est fait) -> à l'affichage Python traduit l'UTF-8 en cp-850 pour la console...

              Edit:

              On peut aussi reproduire l'erreur sous linux : Si on défini le script suivant en UTF-8 :

              #!/usr/bin/env python3
              # -*- coding:Latin-1 -*-
              
              print('é')
              

              À l'exécution on obtient :

              psycopy@psycopc:~/projects$ python3 example.py 
              é
              

              -
              Edité par Anonyme 20 septembre 2014 à 19:29:21

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                20 septembre 2014 à 19:14:27

                Là n'est pas la question, le problème est bien la console windows. Quel que soit le langage utilisé, il est quasiment impossible d'afficher des caractères spéciaux, pour la simple et bonne raison que la console windows utilise par défaut un encodage à peu près inconnu au bataillon.

                Je n'ai pas ce problème chez moi avec Python 3.4 et un encodage console standard cp850

                Image à l'appui

                console windows

                Voilà le code test

                # -*- coding:latin1 -*-
                
                import os
                
                print('éééé ?')
                
                os.system('pause')
                



                -
                Edité par Anonyme 20 septembre 2014 à 19:17:49

                • Partager sur Facebook
                • Partager sur Twitter
                  20 septembre 2014 à 19:59:53

                  Toutes mes excuses, j'étais pourtant persuadé avoir déjà eu des problèmes avec les accents en python dans cmd, mais effectivement après essai, je dois me rendre à l'évidence : aucun problème.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 septembre 2014 à 9:09:24

                    Salut à tous !

                    Désolé mais je n'ai toujours pas compris !

                    Je fais un test sur ma console (Windows 8)

                     # -*- coding:Latin-1 -*-
                    print ('Vous avez gagné')
                    

                    j'obtiens une erreur quelque soit la configuration Latin-1, UTF-16 ou UTF-8 ??????

                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 septembre 2014 à 10:50:39

                      Merci à tous d'avoir répondu mais la première réponse à suffit largement (celle de Alphazeta) 

                      j'ai changé l'encodage sous Notepad et ça marche comme sur des roulettes.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Problème avec l'encodage

                      × 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