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] Charset dans l'obje xmlhttprequest


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut [AJAX] Charset dans l'obje xmlhttprequest
    bonsoir depuis se matin je me embête avec un petit pb de charset

    apparemment mon objet Ajax comunique en iso-8859-1 alors que toutes mes pages et ma base de données sont codées en utf-8.

    j'ai essayé de trouver un moyen de modifier se comportement qui me donne envis de tout démolir.

    j'ai trouvé cette jolie commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');
    héhé seulement ça ne change rien ...

    quelqu'un peut m'aider je déprime là moi.

    pour tester : http://www.lrj.fr/vieuxsite/rudy/test.php

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Les requêtes AJAX sont toujours envoyées en UTF-8.

    Par contre PHP travaillant en ISO-8859-1 je pense que tu dois encoder en UTF-8 ce que tu injectes dans ta réponse.

    Si on prend un "é" dans ta boite de saisie, il est codé sur 2 octets en UTF8 et 1 octet en ascii
    Si tu fais un echo($_POST['tata']); tu renvoies 1 octets codant le "é" alors qu'on attendrait 2 octets en utf-8; d'où l'affichage final du "?".

    Donc si c'est bien le cas tu dois inscrire utf8_encode($_POST['tata']).

    Dis moi de ce que cela donne.


    ERE

  3. #3
    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
    Par défaut
    Salut,
    Citation Envoyé par emmanuel.remy Voir le message
    utf8_encode($_POST['tata'])
    ça ne devrait pas être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    utf8_decode($_POST['tata'])
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST = array_map(utf8_decode, $_POST);

  4. #4
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    merci ça marche maintenant mais je peux pas passer php en utf-8 ou je suis obligé de passer à php 6 ?

  5. #5
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par hiul dragonfel Voir le message
    merci ça marche maintenant mais je peux pas passer php en utf-8 ou je suis obligé de passer à php 6 ?
    PHP v5 travaille en ISO-8859-1.

    A suivre la v6.

    ERE

    EDIT
    Par curiosité, peux tu passer le code de test.php modifié ?

  6. #6
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    voici le code modifer de la page de test.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
          <script type="text/javascript" src="js/AJAX_Class.js"></script>
          <script type="text/javascript">
    /**
     *
     * @access public
     * @return void
     **/
    function fonction(){
       objAjax.execute({"id": "moi", "url": "test.php", "data":{"tata": document.getElementById('4').value}});
    }</script>
    </head>
    <body>
    <?php
    /**
     *
     *
     * @version $Id$
     * @copyright 2009
     */
     
    /**
    * affiche le contenu d'une variable de manière à s'y retrouver
    * 
    * @param $var variable à afficher
    * @param $profondeur profondeur actuelle de la fonction récursive
    * @param $profondeurMax profondeur maximum de la fonction récursive (0 = infini)
    */
    function affiche_var($var, $profondeur = 0, $profondeurMax = 50){
     
       // on arrête quand on atteind $profondeurMax
       if($profondeur < $profondeurMax || $profondeurMax == 0){
     
          // si on a un tableau
          if(is_array($var)){
     
             // on récupère les clefs et les valeurs
             foreach($var as $cle=>$champs){
     
                // indentation
                $indent = '';
     
                // calcule de l'indentation
                for($i = 0; $i < $profondeur; $i++){
                   $indent .= '&nbsp;&nbsp;&nbsp;';
                }
     
                // affichage de la clef courante
                // si le code est en UTF-8 on affiche directement
                if (mb_check_encoding($cle, 'UTF-8')) {
                   echo("\n".'<br />'.$indent.'['.$cle.'] = ');
                }else // sinon on transforme d'abord en UTF-8 puis on affiche
                   echo("\n".'<br />'.$indent.'['.utf8_encode($cle).'] = ');
     
                // on explore le niveau inférieur
                affiche_var($champs, $profondeur+1);
             }
          }else{// sinon on a une valeur simple
             // si le code est en UTF-8 on affiche directement
             if (mb_check_encoding($var, 'UTF-8')) {
                echo($var);
             }else // sinon on transforme d'abord en UTF-8 puis on affiche
                echo(utf8_encode($var));
          } 
       }
    }
     
    ini_set('error_reporting', E_ALL);
     
    affiche_var($_POST);
     
    ?>
    <br />
    ééààôôçç
     
     
    <form name="toto" method="post" action="test.php">
       <input type="text" id="4" name="tata" value=""/>
     
       <input type="button" value="envois" onclick="fonction()"/>
    </form>
    <div id='moi'></div>
    </body>
    </html>
    merci pour les renseignements.

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Merci pour le code, c'est toujours intéressant à lire

    ERE

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

Discussions similaires

  1. [C#][Ajax] WebControl dans un updatepanel
    Par Damien R dans le forum ASP.NET
    Réponses: 6
    Dernier message: 07/12/2006, 09h17
  2. [AJAX] documentation de l'objet XMLHttpRequest
    Par linkin_khalid dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/10/2006, 17h29
  3. [AJAX] besoin d'aide pour xmlhttprequest
    Par argon dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/06/2006, 17h55
  4. [AJAX] ajax et # dans barre de titre
    Par speedev dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 17h55
  5. Charset dans un .bat avec mkisofs ?
    Par Neilos dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 25/02/2006, 18h52

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