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

Langage PHP Discussion :

Encodage lors d'un appel HttpRequest et utilisation de Smarty


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Par défaut Encodage lors d'un appel HttpRequest et utilisation de Smarty
    Bonjour,

    Je souhaite définir une fonction AJAX qui a pour but d'ajouter à ma page HTML un div avec un formulaire prérempli lors d'un click utilisateur.

    J'utilise PHP et smarty comme moteur de template pour mes pages.

    Tout fonctionne très bien si ce n'est l'encoding de mon div ajax qui n'est pas le même que celui de ma page. Je suis en ISO-8859-1 (*) pour les pages mais je pense que je dois encoder en UTF8 les div HttpRequest (vu les caractères bizarres que j'obtient).

    Y a t'il un moyen propre de définir/changer l'encoding de ce que génèrer la fonction display de smarty ?

    (*) : je suis sur un vieux projet et je ne peux pas changer !!!

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    A mon avis le problème vient du code du formulaire, il faut s'assurer que les caractères spéciaux soient bien encodés...
    Sinon il suffit de changer ton tpl correspondant à l'en-tête et de mettre UTF-8

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Par défaut
    Non, si je déclare ma page avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    j'ai des caractères bizarres aussi bien dans mon formulaire que sur le restant de la page.

    J'ai fais le test suivant, en PHP dans mon appel httpRequest, je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "éééé<br>"; 
    echo utf8_encode("ééé");
    ce qui donne des caractères bizarres uniquement dans la première ligne, alors que ma page est déclarée en ISO-8859-1...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Par défaut
    Bon je crois que j'ai compris d'où provient mon souci :

    Les réponses aux requêtes HTTP (via httpRequest ici) se font visiblement avec un charset définit par défaut à UTF8 dans l'entête. L'entête utilisé par le navigateur pour décoder les caractères de mon <div> n'est donc plus celui définit dans ma page HTML de base et dans mes pages PHP : ISO-8859-1

    J'ai trouvé et essayé cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlHttp.overrideMimeType("text/html; charset=ISO-8859-1");
    Pour définir l'entête de mon appel ajax avec les mêmes propriété que celle de ma page.

    Cela fonctionnne très bien sur firefox mais pas sur IE

    Voici mon code Ajax au complet :
    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
    function ajaxFunction(url, divId) {
    	var xmlHttp;
      	try {
        	// Firefox, Opera 8.0+, Safari
        	xmlHttp=new XMLHttpRequest();
      	} catch (e) {
        	// Internet Explorer
        	try {
          		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        	} catch (e) {
          		try {
            		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          		} catch (e) {
            		alert("Your browser does not support AJAX!");
            		return false;
          		}
        	}
      	}
     	xmlHttp.onreadystatechange=function() {
         	if(xmlHttp.readyState==4) {
           		document.getElementById(divId).innerHTML=xmlHttp.responseText;
          	}
      	}
        xmlHttp.open("GET",url,true);
        xmlHttp.overrideMimeType("text/html; charset=ISO-8859-1");
        xmlHttp.send(null);
    }
    ps : je me rend bien compte que le sujet dérive vers AJAX plus que vers PHP mais je n'aurais pas pu le dire initialement !

Discussions similaires

  1. Utilisation d'une variable lors de l'appel de la fonction
    Par guy16 dans le forum Général Python
    Réponses: 18
    Dernier message: 12/05/2015, 15h47
  2. Erreur lors d'un appel RPC en utilisant gwt-sl
    Par riadhhwajdii dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 23/02/2011, 16h14
  3. Utilisation de variables lors d'un appel
    Par Bibipulse dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/02/2008, 14h01
  4. pb encodage lors export XML
    Par gemogof dans le forum ASP
    Réponses: 6
    Dernier message: 26/03/2005, 14h13
  5. Erreur lors de l'appel d'un page ASP
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 27/08/2004, 15h17

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