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

Réseau/Web Python Discussion :

Caractères spéciaux sous HTML


Sujet :

Réseau/Web Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut Caractères spéciaux sous HTML
    Bonjour,
    je m'excuse d'avance d'être le millionième à poser cette question.

    Je voudrais transformer une chaîne avec des caractères accentués ou d'autres comme des symboles spéciaux en une chaîne pour un fichier HTML. Par exemple, & doit devenir &.

    Existe-t-il une méthode élégante (autre qu'un codage brut que je sais faire) ?

  2. #2
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    Tu peux utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # convertir texte en unicode
    texte = "é".decode('utf-8')
    # variante : texte = u"é"
     
    # convertir unicode non-ascii en HTML
    texte.encode('ascii', "xmlcharrefreplace")
    pour transformer tout les caractères non-ascii en HTML.


    Ensuite, pour le "&", vu que c'est déjà du ascii, il faut faire un "replace".
    Plus d'infos ici :
    http://effbot.org/zone/unicode-in-html.htm

  3. #3
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Merci pour le lien qui est très simple à comprendre. Je vais pouvoir utiliser directement le code qui s'y trouve.

    Dommage que Python ne propose pas cela en standard. C'est tellement courant de fabriquer des pages HTML que je ne dois sûrement pas être le seul à avoir besoin de ce genre de fonctionnalité.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    C'est déjà partiellement en standard avec la fonction encode(..., "xmlcharrefreplace").

    Il existe peut-être une fonction améliorée qui gère les "&" (l'article date de 2003 ; il a pu y avoir des changements depuis), mais moi je ne connais que cette méthode, et ça me suffit largement...

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Voici une méthode très courte trouvée sur le net un peu par hasard.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #!/usr/bin/env python
    # -*- coding: cp1252 -*-
     
    import htmlentitydefs,re,string
     
    def stringhtml(chaine):
        emap={}
        for i in range(256):
            emap[chr(i)]= "&%d;" % i
     
        for entity, char in htmlentitydefs.entitydefs.items():
            if emap.has_key(char):
                emap[char]="&%s;" % entity
     
        def remplace(m,get=emap.get):
            return string.join(map(get,m.group()),"")
     
        return re.sub(r'[&<>\"\x80-\xff]+', remplace, chaine)
     
    chaine='à == ç == è == ù == û == è == & == ë "'
    print chaine
    print stringhtml(chaine)
    On obtient alors :
    à == ç == è == ù == û == è == & == ë == "
    &agrave; == &ccedil; == &egrave; == &ugrave; == &ucirc; == &egrave; == &amp; == &euml; == &quot;

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

Discussions similaires

  1. probeme caractères spéciaux sous Linux
    Par ralf091 dans le forum Langage
    Réponses: 5
    Dernier message: 30/06/2008, 11h10
  2. [SDL_ttf]Accents, caractères spéciaux sous linux
    Par Jordinateur dans le forum SDL
    Réponses: 2
    Dernier message: 08/06/2008, 16h18
  3. caractère spéciaux sous IE dans de l'AJAX
    Par bb62 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/04/2008, 12h01
  4. convertir les caractères spéciaux en html
    Par jultoys dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/07/2007, 18h49
  5. affichage des caractères spéciaux sous java
    Par hasnaouiwafa dans le forum Général Java
    Réponses: 2
    Dernier message: 03/04/2007, 17h23

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