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

JavaScript Discussion :

[AJAX] affichage de caractères accentués


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [AJAX] affichage de caractères accentués
    Bonjour !

    je me suis fait une petite application en PHP qui contient une phase d'installation (création d'une base de donnée, création de fichier de configuration)
    Pour controller les phases d'installation je lance un flux asynchrone par ajax qui permet à chaque étape de connaître le résultat et incrémente une barre de progression en %
    J'utilise un format JSON pour les données de retour (le script PHP de l'installation fais un echo "{données en JSON}".
    Coté client, le message s'affiche mais chaque 'é', 'è', 'à', etc affiche un '?'
    j'ai bien essayé de remplacé les 'é' par des 'é' mais cela ne marche pas



    que faire ?

    Mon code :

    coté serveur : (renvois d'un JSON)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    echo "{
    'etape' : $etape,
    'etat' : $etat,
    'nombre' : 20,
    'erreur' : '$msg',
    'info' : '$msg',
    'next' : 'installation.php?etape=$next'
    }";
    coté client (HTML & AJAX) :
    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
     
    entête HTML : <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     
    Javascript : 
    function installation(cible,etape,nb){
            // cible : fichier cible // etape : numéro de l'étape // nb : nombre total des étapes
    	if(etape<=nb){
    		rep = reqAjaxAsync(cible,montreRep); // fonction AJAX asynchrone
    	}
    }
    var txt = "";
    function montreRep(){ // traitement de la réponse Asynchrone
    	if (flux.readyState==4){
    		if(flux.status==200){
    			//alert("statut : "+flux.status);
    			var val = eval("("+flux.responseText+")");
    			var etape = val.etape;
    			var nb = val.nombre;
    			var pour100 = Math.round(100*(etape/nb));
    			var cadre = document.getElementById("cadre_installation");
    			if(val.etat == 1) img = "<IMG SRC=\"_ok.png\" BORDER=\"0\" >";
    			else img = "<IMG SRC=\"_error.png\" BORDER=\"0\">";
    			txt += "<BR>"+img+"Etape "+val.etape+"<BR>Message d'erreur : "+val.erreur;
    			 txt += "<BR>Information : "+val.info;
    			cadre.innerHTML = txt;
    			affiche_p100(pour100);
    			etapen1 = 1+val.etape;
    			installation(val.next,etapen1,nb);
    		}
    	}
    }
     
    function affiche_p100(p100){ // affiche la barre de progression en % et le texte revoyé par le JSON
    	var cadre = document.getElementById("cadre_p100");
    	var txt = "<DIV STYLE=\"height: 15px; width: "+p100+"px; background: gold\" align=\"CENTER\">"+p100+"%</DIV>";
    	cadre.innerHTML = txt;
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Utiliser la fonction utf8_encode() coté PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo utf8_encode("{
    'etape' : $etape,
    'etat' : $etat,
    'nombre' : 20,
    'erreur' : '$msg',
    'info' : '$msg',
    'next' : 'installation.php?etape=$next'
    }");
    Sinon, il est aussi possible de jouer sur les headers (je préfère personnellement) :
    header('Content-type: text/plain; charset=utf-8');

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par JulienC Voir le message
    Sinon, il est aussi possible de jouer sur les headers (je préfère personnellement) :
    header('Content-type: text/plain; charset=utf-8');
    +1

    Gros avantage : 1 fois par page au lieu de le faire à chaque echo ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

Discussions similaires

  1. Apache2 : affichage de caractères accentués
    Par batmag dans le forum Apache
    Réponses: 3
    Dernier message: 14/01/2008, 04h07
  2. Affichage des caractères accentués
    Par ChPr dans le forum Langage
    Réponses: 11
    Dernier message: 14/05/2007, 09h51
  3. [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
  4. [AJAX] Massacre des caractères accentués !
    Par Phenol dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2007, 23h28
  5. Problème d'affichage des caractères accentués
    Par ostaquet dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 06h58

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