Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage non correcte de certain caractère

Sujet résolu
    4 avril 2009 à 10:24:42

    Bonjour,

    J'ai créé un formulaire html :

    <form action="" method="post" onsubmit="return save();">
        <textarea id="contenu" name="contenu"></textarea>
        <input type="image" src="bouton.gif"  value="Valider" />
    </form>
    



    Avec sont code javascript :

    function save()
    {
        var xhr;
        xhr = new XMLHttpRequest();
        
        var contenu = escape(document.getElementById('contenu').value);
        
        xhr.open('POST','formulaire.php', true);
        xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        xhr.send('contenu='+contenu);
    }
    



    Et sa page formulaire.php :

    mysql_connect("localhost", "root", "");
    mysql_select_db("test");
     
    $data = $_POST['content'];
    mysql_query("INSERT INTO notes VALUES('', '$data')");
     
    mysql_close();
    



    Si vous avez bien compris, à partir de ma page html, j'enregistre dans ma base de donnée le contenu du formulaire quand on valide le formulaire et cela grâce au javascript.

    Tout fonctionne correctement. Le seule problème est que certain caractère ne sont plus les même quand je li dans la base de donnée. Par exemple le "€" devient "%u20AC". Alors que les lettres et les chiffres et le "&" marche correctement.

    Comment je pourrais résoudre ce problème ?

    Merci d'avance pour votre réponse.
    • Partager sur Facebook
    • Partager sur Twitter
      4 avril 2009 à 10:32:49

      escape()... à ton avis... ça fait quoi >_<
      La protection c'est en PHP... et envois un header pour donner l'encodage avec ta fonction Ajax au cas où... ça pourrait aider...

      Et tu codes en HTML ou xHTML ?
      Tu envois ton javascript en CDATA ? (Les commentaires bisards que j'ai jamais compris... et que j'utilise pas parce que je code en HTML...)
      • Partager sur Facebook
      • Partager sur Twitter
        4 avril 2009 à 10:45:57

        Citation : xavierm02

        escape()... à ton avis... ça fait quoi >_<


        La fonction escape renvoie l'encodage hexadécimal d'un paramètre dans le jeu de caractères ISO Latin 1 (ISO-8859-1).

        Citation : xavierm02

        et envois un header pour donner l'encodage avec ta fonction Ajax au cas où... ça pourrait aider...


        tu veux dire rajouter la ligne "header('Content-type: text/html; charset=iso-8859-1');" dans mon fichier formulaire.php ?
        Je l'ai fais sa change rien.

        Citation : xavierm02

        Et tu codes en HTML ou xHTML ?


        Je code en Xhtml

        Citation : xavierm02

        Tu envois ton javascript en CDATA ?


        Que veut tu dire ?


        • Partager sur Facebook
        • Partager sur Twitter
          4 avril 2009 à 13:44:48

          Euh... je vais pas réellement t'aider avec ton problème, mais je suis face à une grande interrogation...

          Tout d'abord, chez moi, quand je fais un escape("€"), j'obtiens "%A4" (rien à voir avec ton cas...).

          Mais quand je fais un unescape("%A4"), j'obtiens "¤" ... WTF ???

          (A la réflexion, "€" n'est pas dans le jeu de caractères ISO-8859-1... c'est peut-être ça ^^ )
          • Partager sur Facebook
          • Partager sur Twitter
            4 avril 2009 à 19:21:49

            Pour les headers, je pensais à un header dans ce type... après tu cherches pour le mettre... moi je sais pas lequel c'est :p
            xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
            

            • Partager sur Facebook
            • Partager sur Twitter
              4 avril 2009 à 21:42:16

              Citation : xavierm02

              Pour les headers, je pensais à un header dans ce type... après tu cherches pour le mettre... moi je sais pas lequel c'est :p

              xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
              




              Il y est le header.
              • Partager sur Facebook
              • Partager sur Twitter
                5 avril 2009 à 7:45:30

                T'as mis un content-type... il te faudrait un truc pour spécifier l'encodage...
                • Partager sur Facebook
                • Partager sur Twitter
                  5 avril 2009 à 11:33:29

                  J'ai résolu mon problème.

                  Enfaite dans mon fichier javascript, j'ai fait un encodeURIComponent.
                  Et dans mon fichier php, j'ai fait un utf8_decode.

                  Tout les accents marche. Par contre le signe €, ne marche pas. Le problème venait du fait que l'encodage iso-8859-1 ne gère pas le signe €. J'ai donc rajouté cette ligne dans mon fichier php :
                  $content = str_replace ( '€', '€', $content);

                  Maintenant tout marche correctement.

                  Merci pour votre aide.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Affichage non correcte de certain caractère

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown