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] AJAX et soucis d'accents


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Par défaut [AJAX] AJAX et soucis d'accents
    Bonjour à tous,

    Je suis en train de developper un site ou toute la mise à jour et la consultation du compte client est en ajax (contenu afiché dans le div de droite de la page principale)

    Mon problème se situe au niveau des caractères spéciaux (éàè...Etc...)

    En effet, je met à jour un contenu sous firefox, cela ne pose pas de probleme. La consultation sous firefox et IE marche parfaitement et dans ma base mysql définie en utf8_unicode_ci un é s'affiche.

    Je met à jour par internet explorer et là c'est la cata mes accents se transforment en "????" que je consulte sous IE ou Firefox

    J'ai définit toutes mes pages en UTF 8 :

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    et ma methode d'appel ajax est en get :

    sendData(nomdudiv,'null',urldelapage avec tous les gets,'GET');

    Du coup, je comprend rien, j'ai essayé plein de truc lors de la mise a jour... remplacer les accents par les caratères html (é > &eacute sous firefox il le fait bien mais pas sous ie (il détecte meme pas le é)... j'ai testé les html_entity_decode, ut8_encode, decode... etc...

    si vous avez une idée, je suis vraiment preneur.

    Merci d'avance.

  2. #2
    Membre chevronné
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Par défaut
    Citation Envoyé par Florent08800
    Bonjour à tous,

    Je suis en train de developper un site ou toute la mise à jour et la consultation du compte client est en ajax (contenu afiché dans le div de droite de la page principale)

    Mon problème se situe au niveau des caractères spéciaux (éàè...Etc...)

    En effet, je met à jour un contenu sous firefox, cela ne pose pas de probleme. La consultation sous firefox et IE marche parfaitement et dans ma base mysql définie en utf8_unicode_ci un é s'affiche.

    Je met à jour par internet explorer et là c'est la cata mes accents se transforment en "????" que je consulte sous IE ou Firefox

    J'ai définit toutes mes pages en UTF 8 :

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    et ma methode d'appel ajax est en get :

    sendData(nomdudiv,'null',urldelapage avec tous les gets,'GET');

    Du coup, je comprend rien, j'ai essayé plein de truc lors de la mise a jour... remplacer les accents par les caratères html (é > &eacute sous firefox il le fait bien mais pas sous ie (il détecte meme pas le é)... j'ai testé les html_entity_decode, ut8_encode, decode... etc...

    si vous avez une idée, je suis vraiment preneur.

    Merci d'avance.
    Je suis pas sur, mais essaye "charset=ISO-8859-1" au lieu de "utf-8".

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Par défaut
    J'avais essayé mais aucun succès, le soucis d'apres ce que je constate c que l'objet activeX (si le navigateur est IE) n'utilise pas le utf-8 car si je remplis les champs par "é", il me resort bien "é"

  4. #4
    Membre éclairé
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Par défaut
    Pour préciser un peu le sujet, notre site est entièrement en utf-8. Dans les autres pages non AJAX, tout fonctionne.
    Sur Firefox en AJAX, ça fonctionne aussi.
    En fait, le problème vient de Internet Explorer.

    Lorsque l'on appelle la méthode send(), sous Firefox, les données sont bien encodées en utf-8 alors que sur Explorer, les données semblent encodées en ISO.
    Du coup, à la réception, nous avons un gros problème de format.
    Il faut préciser que nous passons nos paramètres en GET.

    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
     
    function sendData(div, data, page, method) {
          if(document.all && !window.opera){
              var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
          }
          else{
              var XhrObj = new XMLHttpRequest();
          }
     
          var content = document.getElementById(div);
     
          if(method == "GET")
          {
              if(data == 'null'){                        
                  XhrObj.open("GET", page);
              }
              else{                        
                  XhrObj.open("GET", page+"?"+data);
              }
          }
          else if(method == "POST"){                   
              XhrObj.open("POST", page);
          }
     
          XhrObj.onreadystatechange = function(){
              if (XhrObj.readyState == 4 && XhrObj.status == 200)
                  content.innerHTML = XhrObj.responseText ;
          }
     
          if(method == "GET"){
              XhrObj.send(null);
          }
          else if(method == "POST"){
              XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
              XhrObj.send(data);
          }
     
      }//fin fonction Ajax
    Nous avons tenté d'ajouter
    XhrObj.setRequestHeader('Content-Type','text/plain charset=utf+8');
    dans la méthode get mais ça ne change absolument rien.

    Comment forcer l'envoie des paramètres en utf-8 dans la méthode send() sur Explorer ?
    Nous avons également essayé de forcer le hearder php en utf-8 grâce à la fonction header mais le problème ne semble pas venir de là non plus.

    En fait, ce ne sont pas les pages elle même qui ne sont pas en utf-8 mais l'encodage des paramètres passés en GET d'une page à l'autre, et seulement sur Explorer.
    Il faut remarquer aussi que nous n'utilisons pas le même objet pour Explorer et les autres navigateurs.
    Dans un cas, c'est XMLHttpRequest(); anlos que dans l'autre, on utilise un ActiveX. Peut-être y a-t-il une différence entre ces deux objets...

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Par défaut
    A priori, c'est lié à la méthode GET.
    Avec la méthode POST, l'encodage utf-8 est bien conservé lors de l'envoie des paramètres.

  6. #6
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Salut,

    Ton ajax appelle tu php ?
    Tu récupère de l'XML ou le ResponseText de XMHHttpRequest ?

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

Discussions similaires

  1. AJAX ASP.NET souci de rechargement de ma page
    Par mr.net dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/04/2008, 16h29
  2. [AJAX] AJAX et accent
    Par maxos75 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/01/2008, 23h37
  3. [AJAX] AJAX encore un pb d'accents
    Par kurt31 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/05/2007, 12h45
  4. [AJAX] AJAX et accents
    Par goldorax113 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/04/2006, 17h01
  5. [AJAX] Ajax et les accents
    Par nico-pyright(c) dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/12/2005, 20h09

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