Partage
  • Partager sur Facebook
  • Partager sur Twitter

Django

Caractères accentués

    18 mai 2013 à 14:03:41

    Re-bonjour,

    Bon, finalement (toujours en étude du tuto Django), je reste avec un problème d'affichage des caractères accentués.

    Ma page :

    <h1>Bienvenue sur le blog des crêpes bretonnes !</h1>
     
    {% for article in derniers_articles %}
        <div class="article">
            <h3>{{ article.titre }}</h3>
            <p>{{ article.contenu|truncatewords_html:80 }}</p>
            <p><a href="{% url "blog.views.lire" article.id %}">Lire la suite</a>
        </div>
    {% empty %}
        <p>Aucun article.</p>
    {% endfor %}

    Sur la 1ère ligne, si je mets "crepe", ça s'affiche bien. Par contre, si je mets "crêpe", j'obtiens une jolie page d'erreur :

    UnicodeDecodeError at /blog/accueil/
    
    'utf8' codec can't decode byte 0xea in position 32: invalid continuation byte
    
    Request Method: 	GET
    Request URL: 	http://localhost:8000/blog/accueil/
    Django Version: 	1.5.1
    Exception Type: 	UnicodeDecodeError
    Exception Value: 	
    
    'utf8' codec can't decode byte 0xea in position 32: invalid continuation byte
    
    Exception Location: 	C:\Python27\lib\encodings\utf_8.py in decode, line 16
    Python Executable: 	C:\Python27\python.exe
    Python Version: 	2.7.3
    Python Path: 	
    
    ['D:\\Documents\\MesSites\\SiteAvecDjango\\crepes_bretonnes',
     'C:\\Windows\\system32\\python27.zip',
     'C:\\Python27\\DLLs',
     'C:\\Python27\\lib',
     'C:\\Python27\\lib\\plat-win',
     'C:\\Python27\\lib\\lib-tk',
     'C:\\Python27',
     'C:\\Python27\\lib\\site-packages',
     'C:\\Python27\\lib\\site-packages\\PIL']
    
    Server time: 	sam, 18 Mai 2013 13:56:57 +0200
    ....

    Si vous pouviez me donner une piste pour résoudre le problème...

    Merci d'avance


    • Partager sur Facebook
    • Partager sur Twitter
    « Celui qui trouve sans chercher  est celui qui a longtemps cherché sans trouver. »     - Gaston BACHELARD
      18 mai 2013 à 15:38:04

      Salut,

      Tu dois vérifier que ton éditeur enregistre bien tous les fichiers avec le bon encodage. Par exemple pour Notepad++ : Encodage -> Encoder en UTF-8 (sans BOM).

      Si ce n'est pas le cas, tu devra convertir tous les fichiers (Encodage -> convertir en UTF-8 (sans BOM)).

      Peut-être as-tu aussi oublier d'indiquer dans un des fichier .py l'indication d'encodage :

      # -*- coding:utf-8 -*-

      PS : Il semblerait que le format "UTF-8" classique (avec BOM) puisse créer des erreurs. Et il n'est pas indispensable, donc autant s'en passer.

      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2013 à 18:43:55

        Tous mes fichiers .py commencent bien par : #-*- coding: utf-8 -*- sauf manege.py

        Mon éditeur est PsPad et il est bien en encodage utf-8. mais j'ai toujours l'erreur si je mets des caractères accentués

        Je vois pas où j'ai fais une erreur :(

        • Partager sur Facebook
        • Partager sur Twitter
        « Celui qui trouve sans chercher  est celui qui a longtemps cherché sans trouver. »     - Gaston BACHELARD
          19 mai 2013 à 10:03:09

          Personne pour me donner une piste ?
          • Partager sur Facebook
          • Partager sur Twitter
          « Celui qui trouve sans chercher  est celui qui a longtemps cherché sans trouver. »     - Gaston BACHELARD
            19 mai 2013 à 10:27:49

            Je ne suis pas sûr que se soit lié à python

            rajoute ça dans le head de ton html

            <meta charset="utf-8">



            • Partager sur Facebook
            • Partager sur Twitter
              19 mai 2013 à 12:23:36

              Je pense que ça a à voir avec Django !

              Depuis le views.py de l'application blog, l'affichage de :

              def home(request):
                  text = """<meta charset="utf-8"><h1>Bienvenue sur mon blog !</h1>
                          <p>Les crêpes bretonnes ça tue des mouettes en plein vol !</p>"""
                  return HttpResponse(text)
              

              donne :

              Les cr�pes bretonnes �a tue des mouettes en plein vol !

              Mais, dans models.py de l'application mini_url, le fait de laisser les accents me donne des erreurs :

              class MiniURL(models.Model):
                  url = models.URLField(verbose_name=u"URL a reduire", unique=True)
              
              # passe, alors que :
              
              class MiniURL(models.Model):
                  url = models.URLField(verbose_name=u"URL à réduire", unique=True)
              
              # ne passe pas

              Je ne sais pas quoi faire :(



              • Partager sur Facebook
              • Partager sur Twitter
              « Celui qui trouve sans chercher  est celui qui a longtemps cherché sans trouver. »     - Gaston BACHELARD
                19 mai 2013 à 16:29:13

                Tu as vérifier le LANGUAGE CODE dans le settings.py ?

                # Language code for this installation. All choices can be found here:
                # http://www.i18nguy.com/unicode/language-identifiers.html
                LANGUAGE_CODE = 'fr-FR'



                • Partager sur Facebook
                • Partager sur Twitter
                  20 mai 2013 à 11:40:44

                  Oui, tout est bon de ce coté !

                  De toute façon, laissez tomber ! Django est trop compliqué pour ma petite tête.

                  Je vais continuer à développer mon site en php. Il y a peut être plus de codage à faire, mais au moins je sais où je vais.

                  Je trouve que le tuto est trop basique et pas assez explicite dans ce qu'il tente de nous apprendre : un peu le foullis !

                  Mais c'est mon avis :p . A ne pas prendre à la lettre ;)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  « Celui qui trouve sans chercher  est celui qui a longtemps cherché sans trouver. »     - Gaston BACHELARD
                    20 mai 2013 à 11:57:22

                    Je vois ce que tu veux dire concernant le tuto, moi aussi j'ai galéré pour comprendre le fonctionnement de django.

                    En plus du tuto, je lisais le doc officiel et je posais mes questions sur http://stackoverflow.com/ . Je t'assure que ça vaut le coup de persévérer.

                    Bon courage pour la suite.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 mai 2013 à 18:29:02

                      Que ce soit la doc officiel ou le site où tu posais tes questions, je suis nul en anglais. Alors...

                      Je sais, dans l'informatique ça aide pas :-p

                      • Partager sur Facebook
                      • Partager sur Twitter
                      « Celui qui trouve sans chercher  est celui qui a longtemps cherché sans trouver. »     - Gaston BACHELARD

                      Django

                      × 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