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

AJAX Discussion :

[AJAX] Affichage non correcte de certain caractère


Sujet :

AJAX

  1. #1
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut [AJAX] Affichage non correcte de certain caractère
    Bonjour,

    J'ai créé un formulaire html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 215
    Points : 0
    Points
    0
    Par défaut
    euh, ne fait pas escape peut etre, ou alors fait unescape dans le fichier php avant que les données entrent dans la base de données.

  3. #3
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Je viens de découvrir ceci :
    Les fonctions escape et unescape ne fonctionnent pas correctement pour les caractères non-ASCII et sont donc déconseillées
    Il faut que j'utilise quoi alors ?

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 215
    Points : 0
    Points
    0
    Par défaut
    essaye ca d'abord: http://fr2.php.net/manual/en/function.urldecode.php dans ton fichier php, c'est l' unescape de php

  5. #5
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par sybil Voir le message
    essaye ca d'abord: http://fr2.php.net/manual/en/function.urldecode.php dans ton fichier php, c'est l' unescape de php
    J'ai essayé, il n'y a pas de changement.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 215
    Points : 0
    Points
    0
    Par défaut
    regarde ca alors: http://j2.ions.fr/blog/2005/07/test-...en-php-et.html

    désolé mais j'ai jamais eu ce probleme.

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var contenu = encodeURIComponent(document.getElementById('contenu').value);

  8. #8
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par sybil Voir le message
    regarde ca alors: http://j2.ions.fr/blog/2005/07/test-...en-php-et.html

    désolé mais j'ai jamais eu ce probleme.
    D'aprais ce site, quand je reçois "%u20AC" pour obtenir "€" il faut que j'utilise dans ma fonction php : utf8_encode()

    Mais que le mette ou pas, j'ai toujour la même chose. j'obtient "%u20AC" pour le symbole "€".

    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var contenu = encodeURIComponent(document.getElementById('contenu').value);
    Avec cette ligne, j'obtient : pour le symbole "€" : "€"

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=ISO-8859-1');
    et pour les post
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST = array_map(utf8_decode, $_POST);

  10. #10
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=ISO-8859-1');
    et pour les post
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST = array_map(utf8_decode, $_POST);
    Avec ceci je n'obtient rien à l'affichage.

    Voici ce que j'ai dans ma base de donnée quand je met le €. avec la présence ou pas de encodeURIComponent dans le fichier javascript.

  11. #11
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par snyfir Voir le message
    Avec cette ligne, j'obtient : pour le symbole "€" : "€"
    c'est bon, "€" c'est le symbole € en UTF-8 mais affiché en ISO-8859-1 donc il faut juste que tu dises que c'est de l'UTF-8 à la place

  12. #12
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    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.

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

Discussions similaires

  1. [AJAX] affichage de caractères accentués
    Par vincent44 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/01/2008, 16h26
  2. [AJAX] affichage caractères spéciaux ajax.
    Par vacknov dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/08/2007, 07h25
  3. [AJAX] IE n'affiche pas certains caractères
    Par BoZ-FlYos dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/05/2007, 08h52
  4. [AJAX] Affichage des caractères spéciaux
    Par mitmit dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/04/2007, 13h47
  5. Affichage non correct d'une image
    Par AnonCoder dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2006, 13h51

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