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

Python Discussion :

Python + Apache : problème d'encodage UTF8 [résolu]


Sujet :

Python

  1. #1
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Par défaut Python + Apache : problème d'encodage UTF8 [résolu]
    Bonjour,

    Je suis sur:
    Ubuntu 12.04
    Python 2.7
    Apache 2.2

    Je dois installer une application web en Python qui tourne sur Apache 2.2 via la directive "+ExecCGI".

    Un problème dans un éditeur de texte de cette application l'empêche de prendre en compte les caractères utf-8.
    La documentation de cette application recommande deux mesures:
    -changer l'encodage par défaut de site.py (dans mon serveur /usr/lib/python2.7")d'ascii vers utf-8
    -charger un fichier additionnel "sitecustomize.py" placé dans "/usr/local/lib/python2.7/site-packages qui contient une directive surchargeant l'encodage par défaut de python quand il est dans un contexte "web":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import sys
    sys.setdefaultencoding('utf-8')
    :

    Voir aussi http://docs.python.org/2/library/site.html

    Malheureusement l'erreur se produit toujours, que j'essaye les deux solutions séparément ou bien en même temps. Je ne sais pas si c'est lié à l'application web qui est buguée, ou bien au fait que la modification du paramètres d'encodages n'est pas prise en compte, voire à un conflit éventuel avec un service comme apparmor....

    Es-ce qu'il y aurait moyen de s'assurer que le fichier "sitesustomize.py" est bien chargé et pris en compte dans le contexte web?

    Bien à vous,

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Salut,
    C'est quoi l'erreur?
    Sinon, sys.getdefaultencoding() retourne l'encoding par défaut de l’interpréteur.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Par défaut
    Bonjour et merci

    Je viens de faire un petit CGI avec cette instruction qui me retourne justement 'ascii'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import cgitb
    import sys
    cgitb.enable()
    print 'Content-Type: text/html'
    print
    print sys.getdefaultencoding()
    Le problème c'est que je n'ai pas de message d'erreur tout en aimant bien qu'il y en ait un qui apparaisse quelque part justement.... J'ai configuré le serveur pour que l'encodage par défaut soit utf-8 mais il reste en ascii.
    Par le passé j'avais installé la même application sur des serveurs en Ubuntu 10.04 et les deux modifications mentionnées ci-dessus fonctionnaient, mais plus maintenant. Je me demande si ce ne serait pas lié avec une application apparmor, mais en Googlant j'ai trouvé peu d'info sur un éventuel conflit entre apparmor et le contexte d'exécution de python.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Re.
    Si l'encoding est toujours "ascii", c'est que le setdefault... n'a pas fonctionne.
    Faites le au démarrage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    reload(sys)
    sys.setdefaultencoding('utf-8')
    note: Par défaut le HTML est "latin-1" et il faut indiquer ce qu'il est dans le cas contraire.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Par défaut
    Merci pour votre réponse, cela marche maintenant!

    J'ai débord dû upgrader les package de python sur mon système (vers 2.7.3) via apt avant de redéfinir le format d'encodage par défaut dans le fichier/usr/lib/python2.7/sitecustomize.py.

    J'avais précédemment essayé de définir ce réglage dans /usr/local/lib/python2.7/site-packages/sitecustomize.py (comme indiqué dans la documentation en-ligne de Python...) mais cela ne marchait pas du tout. Le fait de mettre à jour les packages de python a effacé mon ancien fichier "/usr/local/lib/python2.7/site-packages/sitecustomize.py mais c'est en le cherchant que j'ai vu que Python en créait un par défaut dans /usr/lib/python2.7/sitecustomize.py(avec un lien symbolique /etc/python2.7/sitecustomize.py), qui lui est pris en compte.

    Ce fichier contient maintenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #install the apport exception handler if available
    try:
          import apport_python_hook
    except ImportError
          pass
    else:
          apport_python_hook.install()
          import sys
          sys.defaultencoding('utf-8')
    En revanche la solution consistant à changer le réglage de l'encodage du contexte web directement dans le fichier "site.py" à laquelle je recourais auparavant ne marche plus. J'ai quand-même l'impression que Apparmor "vérifie" (ou plutôt verrouille) la configuration de Python lorsqu'il est installé sur des distributions récentes basées sur Ubuntu et impose maintenant de passer par ce système de Hook pour la modifier. J'espère que je ne vais pas perdre cette configuration lors de la prochaîne mise à jour des packages...

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Salut,
    Citation Envoyé par CetTer Voir le message
    J'espère que je ne vais pas perdre cette configuration lors de la prochaîne mise à jour des packages...
    Il serait préférable de placer un fichier usercustomize.py - sitecustomize.py est appelé avant - dans le répertoire principal de l'application - plutôt que dans les arborescences Python.
    Cela vous oblige a (re)définir PYTHONPATH pour que l’exécution de site.py le trouve avant les autres.

    - 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. [PostgreSQL] Problème d'encodage UTF8
    Par simondu43 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/02/2011, 14h25
  2. Problème d'encodage (utf8)
    Par s0ak68 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 21/01/2008, 14h21
  3. Problèmes d'encodage utf8
    Par gvdmoort dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 09/09/2007, 16h32
  4. [MySQL] Problème d'encodage utf8
    Par tomix81 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/07/2007, 22h31
  5. Problème d'encodage UTF8
    Par vg33 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 19h28

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