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

JavaScript Discussion :

innerHTML qui ne gère pas les accents (à, é,è..)


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut innerHTML qui ne gère pas les accents (à, é,è..)
    Bonjour tout le monde,

    Je viens de remarquer que innerHTML ne gérait pas les accents

    Je l'ai découvert en affichant du texte sans javascript (AJAX) et avec javascript (AJAX).

    Quand je fais un echo en PHP de mon tableau, j'obtiens ceci :

    Voir image attachée nommée "okavecAccents.JPG"

    Le code PHP est celui-ci (juste pour information) :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    include('connexion.php');
    $sql = "SELECT * FROM messages WHERE Annee = '".$_POST['select_annee']."' ORDER BY ID DESC";
    //echo $sql;
    $req = mysql_query($sql);
    //echo $req; 
    include('../index/regreplace.php');
     
    while($res = mysql_fetch_array($req))
    {
            $res['Corps']=parseur($res['Corps']);
     
            echo '
            <table width="630" border="1" cellspacing="8" cellpadding="4" align="center">
                    <tr>
                                    <td height="39" colspan="4" id="td_annee" align="center"><strong>Année</strong>                                
                                    : '.$res['Annee'].' </td>
                    </tr>
                    <tr>
                            <td width="106"><strong>Avis N&deg; :</strong>'. $res["ID"].'                           </td>
        
                            <td width="193"><strong>Date :</strong> '.date(d.'/'.m.'/'.Y).'                         </td>
                        <td width="267"><strong>Expire le :</strong></td>
                    </tr>
              <tr>
                                    <td height="39" colspan="4" align="center"><strong>'.$res['Titre'].'</strong>                           </td>
              </tr>
                    <tr>
                            <td height="214" id="Corps" colspan="4" valign="top"> '.$res['Corps'].'
                                    
                                    </td>
                    </tr>
                    <tr>
                            <td height="39" colspan="4"><strong>Auteur : </strong>  '.$res['Auteur'].'                      </td>
                    </tr>
                    <tr>
                            <td colspan="4"><strong>Lien :</strong>                         </td>
                    </tr>
                    <tr>
                            <td colspan="4" align="center"><strong>Pi&egrave;ce jointe </strong>                            </td>
                    </tr>
            </table>
            </br>
            </br>
    ';
    }
    ?>
    Je vous laisse le printscreen de l'alerte du innerHTML et vous verrez que les accents ne sont pas pris en compte, avec le même code PHP pourtant :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    include('connexion.php');
    $sql = "SELECT * FROM messages WHERE Annee = '".$_POST['select_annee']."' ORDER BY ID DESC";
    //echo $sql;
    $req = mysql_query($sql);
    //echo $req; 
    include('../index/regreplace.php');
     
    while($res = mysql_fetch_array($req))
    {
            $res['Corps']=parseur($res['Corps']);
     
            echo '
            <table width="630" border="1" cellspacing="8" cellpadding="4" align="center">
                    <tr>
                                    <td height="39" colspan="4" id="td_annee" align="center"><strong>Année</strong>                                
                                    : '.$res['Annee'].' </td>
                    </tr>
                    <tr>
                            <td width="106"><strong>Avis N&deg; :</strong>'. $res["ID"].'                           </td>
        
                            <td width="193"><strong>Date :</strong> '.date(d.'/'.m.'/'.Y).'                         </td>
                        <td width="267"><strong>Expire le :</strong></td>
                    </tr>
              <tr>
                                    <td height="39" colspan="4" align="center"><strong>'.$res['Titre'].'</strong>                           </td>
              </tr>
                    <tr>
                            <td height="214" id="Corps" colspan="4" valign="top"> '.$res['Corps'].'
                                    
                                    </td>
                    </tr>
                    <tr>
                            <td height="39" colspan="4"><strong>Auteur : </strong>  '.$res['Auteur'].'                      </td>
                    </tr>
                    <tr>
                            <td colspan="4"><strong>Lien :</strong>                         </td>
                    </tr>
                    <tr>
                            <td colspan="4" align="center"><strong>Pi&egrave;ce jointe </strong>                            </td>
                    </tr>
            </table>
            </br>
            </br>
    ';
    }
    ?>
    Qu'en pensez-vous ?

    Merci d'avance pour l'aide.

    beegees

  2. #2
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Alors, là je t'avoue que je ne comprends pas du tout ton problème

    Si l'encodage des tes pages est bonnes, voir que tu fais tout avec des &eacutes; ou autres, il ne devrait pas y avoir de problème.

    Par contre que le alert() de JavaScript affiche mal les accents est normal. Les accents en JavaScript ne se gèrent pas de la même manière. Par exemple :
    • é : \351
    • é : \351
    • è : \350
    • ê : \352
    • à : \340


    Voir la deuxième colonne de ce tableau pour les autres accents.
    est votre ami. Utilisez le avant de venir poser une question traitée 50 fois.
    Exprimez vous dans un français correct, vous serrez mieux compris.

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par k1rby Voir le message
    Alors, là je t'avoue que je ne comprends pas du tout ton problème

    Si l'encodage des tes pages est bonnes, voir que tu fais tout avec des &eacutes; ou autres, il ne devrait pas y avoir de problème.

    Par contre que le alert() de JavaScript affiche mal les accents est normal. Les accents en JavaScript ne se gèrent pas de la même manière. Par exemple :
    • é : \351
    • é : \351
    • è : \350
    • ê : \352
    • à : \340


    Voir la deuxième colonne de ce tableau pour les autres accents.
    Salut,

    Merci pour ta réponse.

    J'utilise AJAX.

    Ce que j'affiche, c'est du texte javascript dans du innerHTML.

    Par contre que le alert() de JavaScript affiche mal les accents est normal. Les accents en JavaScript ne se gèrent pas de la même manière.
    Ce qui explique donc mon problème.

    Tu crois qu'il y a moyen en javascript de remplacer les caractères accentuées par les \x.. ?

    Merci encore pour ton aide.

    beegees

  4. #4
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    On pourrait avoir la fonction AJAX que tu utilises ? Ça aiderai, pasque là, je visualise pas trop le problème (là où se trouve le innerHTML par exemple )
    est votre ami. Utilisez le avant de venir poser une question traitée 50 fois.
    Exprimez vous dans un français correct, vous serrez mieux compris.

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par k1rby Voir le message
    On pourrait avoir la fonction AJAX que tu utilises ? Ça aiderai, pasque là, je visualise pas trop le problème (là où se trouve le innerHTML par exemple )
    Salut,

    Je viens de trouver une solution

    Je passe mes chaines par htmlentities avant de les enregistrer dans la bd.

    et ça marche nikel.

    Merci pour l'aide.

    beegees

  6. #6
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Euuuh, ben avec plaisir
    est votre ami. Utilisez le avant de venir poser une question traitée 50 fois.
    Exprimez vous dans un français correct, vous serrez mieux compris.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    un simple header php utf-8 aurait suffit éventuelement un utf-8 encode
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 59
    Points
    59
    Par défaut
    Tu pourrais en dire un peu plus SpaceFrog? J'ai le même problème avec ma fonction AJAX, des "?" à la place des accents s'affichent dans le corps du document(FireBug affiche correctement la réponse à la requête...). J'ai bel et bien un header "charset=utf-8" dans ma page PHP mais ça n'a pas l'air de changer grand chose.

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

Discussions similaires

  1. un case qui ne prend pas les accents
    Par francky74 dans le forum Langage
    Réponses: 6
    Dernier message: 27/02/2015, 10h53
  2. Réponses: 0
    Dernier message: 01/02/2011, 19h45
  3. [RegEx] ereg qui ne trouve pas les accents
    Par Sephiroth Lune dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2007, 18h05
  4. Windows ne gère plus les accents
    Par Tofalu dans le forum Windows XP
    Réponses: 9
    Dernier message: 30/03/2005, 16h23

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