Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'encodage

Les accents

Sujet résolu
    12 septembre 2014 à 23:04:19

    Bonsoir à tous.

    Le problème est très simple, malgré l'encodage # -*-coding:Latin-1 -*, le code n'accepte pas les accents.

    Je vous montre le code que tous ceux qui ont suivis le cours de Python sur Openclassrooms devrait reconnaitre :

    # -*-coding:Latin-1 -*
    
    import os
    
    année = input("Veuillez entrer une année : ")
    année = int(année)
    
    if année % 400 == 0 or (année % 4 == 0 and année % 100 != 0):
    	print("L'année est bissextile")
    else:
    	print("L'année n'est pas bissextile")
    
    os.system("pause")



    • Partager sur Facebook
    • Partager sur Twitter
      12 septembre 2014 à 23:06:16

      Je rajoute que sans la ligne d'encodage, il me lit parfaitement les accents...

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        13 septembre 2014 à 0:44:52

        Tu veux dire que sans la déclaration d'encodage le script que tu nous montre ci-dessus s’exécute correctement, c'est bien ça ? Si c'est le cas ça signifie que ton éditeur de texte a enregistré ton script en UTF-8, ce qui est une bonne chose.

        Par défaut, les versions 3 de l'interpréteur Python considèrent que l'encodage des scripts est l'UTF-8, sauf si une déclaration d'encodage vient dire le contraire. Choisir l'encodage d'un fichier, c'est le rôle de l'éditeur de texte. La déclaration d'encodage ne sert que si cet éditeur est incapable d'encoder en UTF-8 (mais dans ce cas là, le mieux est encore de changer d'éditeur de texte).

        Voilà pour la question d'encodage, maintenant parlons du respect des conventions et de la portabilité (la compatibilité d'un OS à un autre) de tes scripts :

        1. Les identifiants (les noms de variables ou autres) ne doivent contenir que des lettres ASCII, des chiffres et le caractère souligné _ (donc pas d'accents, même si Python 3 les accepte) !
        2. Les appels à os.system(...), en plus d'être potentiellement dangereux, dépendent trop souvent de l'OS (la commande système pause n’existe pas sur les OS de type UNIX) !

        Note qu'une pause à la fin de l’exécution d'un script est totalement inutile ; si tu veux être sûr de pouvoir lire les éventuels messages d'erreurs de Python, la seule solution viable est d’exécuter tes scripts depuis un terminal système (cmd.exe sous Windows).

        -
        Edité par Anonyme 13 septembre 2014 à 0:48:45

        • Partager sur Facebook
        • Partager sur Twitter
          13 septembre 2014 à 0:52:11

          Pour le moment je n'en suis qu'à la fin de la première partie du cours sur Python mais dans pas longtemps je vais surement lire et comprendre à 100 % ce que tu me dis sur les pause. Merci à toi d'avoir pris le temps de m'écrire et de m'avoir donné plein d'info !
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            13 septembre 2014 à 1:40:38

            Il n'y a pas de quoi. ;)

            Pour la pause, dis-toi simplement que la fonction os.system('pause') est à bannir et que pour lancer tes scripts tu dois utiliser l'invite de commande de Windows (cmd.exe).

            En fait, je te conseils d'utiliser l'éditeur de texte notepad++ et d’exécuter tes script en appuyant sur F5 (ou F6 je sais plus) puis d'enregistrer la commande %comspec% -c py -3 $(full_current_path) && pause ou un truc du genre... Comme mon Windows a rendu l'âme récemment je ne peux pas vérifier. :(

            Bonne continuation.

            -
            Edité par Anonyme 13 septembre 2014 à 1:41:03

            • Partager sur Facebook
            • Partager sur Twitter

            Problème d'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