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

Django Python Discussion :

'utf8' codec can't decode byte 0xe9 in position 539: invalid continuation byte


Sujet :

Django Python

  1. #1
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut 'utf8' codec can't decode byte 0xe9 in position 539: invalid continuation byte
    Salut tout le monde,

    J'ouvre une page html vi le serveur applicatif de Django, et j'obtiens l'erreur suivante :
    'utf8' codec can't decode byte 0xe9 in position 539: invalid continuation byte

    Est-ce que quelqu'un aurait une idée? QUe faut-il faire?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Par défaut
    Rajoute le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: utf-8 -*-
    en début de fichier.

    Edit: ou vérifier l'encodage des fichiers html.

  3. #3
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    Je l'ai mis au début de mon fichier views.py, et ça ne fonctionne pas non plus...
    C'est au début de quel fichier?

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064

  5. #5
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    A vrai dire je fais juste une redirection vers une page HTML donc à priori je n'ai pas besoin d'encode quoi que ce soit :


    =>url(r'^Mysite/signup/$', 'Mysite.MysiteTEST.views.signup_view')

    Qui renvoie vers la vue suivante :
    def signup_view(request):
    return render_to_response("signup.html")

    signup.html est une page HTML standard avec quelques CSS et un script JS...

    D'autres idées?

    Merci d'avance!

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Salut,

    signup.html est une page HTML standard avec quelques CSS et un script JS...
    Si la page HTML standard contient des caractères accentués, il faudra préciser comment ils sont encodés d'une façon ou d'une autre.
    Dans votre cas, cela se passe comme si on lisait un caractère accentué "latin-1" avec un décodeur utf-8.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    il faut définir l'encodage au début du code source python.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: <encoding name> -*-
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Salut,

    Citation Envoyé par Golgotha Voir le message
    il faut définir l'encodage au début du code source python.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: <encoding name> -*-
    Probablement... mais cela ne vaut que pour les fichiers "script" lus par l'interpréteur et non les fichiers "autres" lus par le programme interprété.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre expérimenté Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Par défaut
    Salut ,

    j'ai eu ce genre d'erreur il y a peu.

    Dans mon cas, je faisais une importation de données d'une vieille base aux encodages multiples vers une nouvelle base bien propre utilisée par mon appli Django.

    pour ne pas interrompre l'importation, j'ai effectué un traitement mineur au champs causant ce problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    f[1].encode('unicode_escape'),
    ...
    Le résultat obtenu, est une chaine d'octects donc les caractères spéciaux se retrouvent affichés d'une façon brute et non converti .

    En espérant que cela va t'aider


    Petites explications sur l'utilisation de encode() et 'unicode_escape'

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut
    Bonjour ici,

    J'ai un soucis à peu près du même charactère (petit jeu de mot )

    Donc j'ai un client java qui communique avec un serveur python.

    Mon serveur est fait pour recevoir des JSON Strings, donc encodées en UTF-8.

    Voilà comment mon client (java) envoie des données :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.out.writeBytes(this.escapeContent(message)+"\n"); //la méthode escape content n'influe pas sur le probleme d'encodage (testé sans)
    this.out.flush();

    Et voici comment mon serveur (python) les récupère :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    data = self.socket.recv(1024)
                    if not data:
                        break
                    dataList=data.decode('utf8').split("\n")

    Tout fonctionne impeccablement jusqu'à ce qu'un character accentué (ou autre) pointe son nez et.... TADAM ! Exception !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 12: invalid continuation byte
    Traiter l'exception n'est pas un probleme, le probleme est surtout de bien encoder les données envoyées (job de java) ou de bien les décoder (job de python). Donc j'ai essayé de remplacer le writeBytes par un writeUTF, mais quand python reçoit ma JSON String, il la considère comme non json (et donc exception de décodage json).

    Donc est ce que le probleme doit être réglé dans java, quand j'encode mes datas (dans quel cas je pourrai aller faire un petit coucou au forum java ), ou dans python quand je les décode ?

    Merci pour votre attention

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Salut,

    Si vous preniez le temps de lire le post donné en référence dans celui de fred1599 vous suspecteriez plutôt Java d'expédier du "latin-1" et non de l'"utf-8".

    Si vous allez dans le forum Java demandez aussi comment "tester" le code "Java" pour s'assurer qu'il expédie bien de "l'utf-8" avant que les applications "python" (ou autres) qui le récupèrent se prennent les pieds dans le tapis.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/04/2014, 23h43
  2. UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9'
    Par slaima15 dans le forum Général Python
    Réponses: 4
    Dernier message: 06/06/2011, 23h18
  3. UnicodeEncodeError: 'ascii' codec can't encode character
    Par WebTotoche dans le forum Général Python
    Réponses: 5
    Dernier message: 06/04/2011, 08h58
  4. Decoder utf8 en javascript
    Par maximenet dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 23/02/2008, 10h53
  5. 'ascii' codec can't decode byte
    Par Bibicmoi dans le forum Général Python
    Réponses: 5
    Dernier message: 28/08/2007, 23h15

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