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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    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 : 50
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    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 expérimenté 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
    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.

  3. #3
    Membre expérimenté
    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 : 50
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    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 expérimenté 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
    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 )

  5. #5
    Membre expérimenté
    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 : 50
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    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 expérimenté 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
    Par défaut
    Euuuh, ben avec plaisir

+ 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