Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2008, 10h10   #1
Invité de passage
 
Inscription : mars 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 7
Points : 4
Points : 4
Par défaut 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 :
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 :
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;
}
vincent44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 15h33   #2
Membre régulier
 
Inscription : juillet 2003
Messages : 89
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 89
Points : 90
Points : 90
Utiliser la fonction utf8_encode() coté PHP

Code :
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');
JulienC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 16h26   #3
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
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 : 9 315
Points : 15 609
Points : 15 609
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h42.


 
 
 
 
Partenaires

Hébergement Web