Page 1 sur 1

Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 29 juil. 2010, 04:22
par ilanb
Bonjour,

j'utilise un service web avec une DB en utf-8:
$posts = array();
	if(mysql_num_rows($result)) {
		while($post = mysql_fetch_assoc($result)) {
			$posts[] = array('post'=>array_map('utf8_encode',$post));
		}
	}

	if($format == 'json') {
		header('Content-type: application/json');
		echo json_encode(array('posts'=>$posts));
	}
	else {
		header('Content-type: text/xml');
		echo '<posts>';
		foreach($posts as $index => $post) {
			if(is_array($post)) {
				foreach($post as $key => $value) {
					echo '<',$key,'>';
					if(is_array($value)) {
						foreach($value as $tag => $val) {
							echo '<',$tag,'>',($val),'</',$tag,'>';
						}
					}
					echo '</',$key,'>';
				}
			}
		}
		echo '</posts>';
	}
si je fait : http://localhost/webservice/web-service ... er=1&num=3

j'obtient un xml correct : (avec accent)

Code : Tout sélectionner

<posts> − <post> <post_title>A propos à jour</post_title> <guid>http://localhost/wordpress/?page_id=2</guid> </post> − <post> <post_title>Bonjour tout le monde!</post_title> <guid>http://localhost/wordpress/?p=1</guid> </post> </posts>
Maintenant si je fait : http://localhost/webservice/web-service ... ormat=json

1) dans FF cela fonctionne pas il me demande si je veux télécharger le fichier .php 8-|

2) dans G-chrome il parse mais:

Code : Tout sélectionner

{"posts":[{"post":{"post_title":"A propos \u00e0 jour","guid":"http:\/\/localhost\/wordpress\/?page_id=2"}},{"post":{"post_title":"Bonjour tout le monde!","guid":"http:\/\/localhost\/wordpress\/?p=1"}}]}
"A propos \u00e0 jour" n'est pas correcte devrait être : "A propos à jour"

J'utilise MAMP sous OSX php 5.3

J'ai essayé pas mal de chose avec encode, decode... mais là je suis dans la louse #-o

Merci

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 30 juil. 2010, 09:57
par telnes
hello

et en ajoutant

header('Content-type: text/html; charset=UTF-8');

++

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 30 juil. 2010, 21:18
par ilanb
hello

et en ajoutant

header('Content-type: text/html; charset=UTF-8');

++
Merci telnes,

Déjà essayé, Idem !

faudrait changer l'écriture française et supprimer c'est pu... d'accents #-o

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 31 juil. 2010, 20:41
par stealth35
et ton fichier est bien en utf-8 aussi ?

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 31 juil. 2010, 23:03
par ilanb
J'utilise toujours TexMate utf-8 :wink: pour éditer mes fichiers php

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 31 juil. 2010, 23:45
par stealth35
normalement c'est pas grave si tu fais un json_decode derrière les accent reviennent, c'est peu etre une caractéristique du navigateur qui ré encode par dessus, t'as essayé en mettant text/plain au lieu de application/json ?

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 01:15
par ilanb
Avec "text/plain" c'est la même chose: pb accent.
Par contre affichage correcte (me demande plus si je veux enregistrer le fichier php...) sous FF

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 01:44
par stealth35
Avec "text/plain" c'est la même chose: pb accent.
Par contre affichage correcte (me demande plus si je veux enregistrer le fichier php...) sous FF
c'est normale pour FF , le application/json il reconnais pas, (de toute façon le MIME pour ces trucs la c'est bidon)

par contre pour t'as un utf8_encode ? les donnée de ta base ne son pas en utf-8 ?
verfie aussi le charset sur firefox (clique droit - information sur la page)

je ferais des testes de mon coté,

ps : pourquoi MAMP ? y'a deja un serveur apache - php nativement sous osx.

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 01:55
par ilanb
par contre pour t'as un utf8_encode ? les donnée de ta base ne son pas en utf-8 ?
ben en fait si je met pas ça c'est le xml qui part en couille et oui ma base est en utf-8
verfie aussi le charset sur firefox (clique droit - information sur la page)
Bizzard c'est: ISO-8859-1
pourquoi MAMP ? y'a deja un serveur apache - php nativement sous osx.
Question d'habitude... j'évite le camboui :mrgreen:

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 02:05
par ilanb
Si j'ecris:

Code : Tout sélectionner

$posts[] = array('post'=>$post);
sortie:

Code : Tout sélectionner

{"posts":[{"post":{"post_title":null,"guid":"http:\/\/localhost\/wordpress\/?page_id=2"}},{"post":{"post_title":"Bonjour tout le monde!","guid":"http:\/\/localhost\/wordpress\/?p=1"}}]}
Si:

Code : Tout sélectionner

$posts[] = array('post'=>array_map('utf8_encode',$post));
sortie:

Code : Tout sélectionner

{"posts":[{"post":{"post_title":"A propos \u00e0 jour","guid":"http:\/\/localhost\/wordpress\/?page_id=2"}},{"post":{"post_title":"Bonjour tout le monde!","guid":"http:\/\/localhost\/wordpress\/?p=1"}}]}
Si:

Code : Tout sélectionner

$posts[] = array('post'=>array_map('utf8_decode',$post));
sortie:

Code : Tout sélectionner

{"posts":[{"post":{"post_title":"A propos ?our","guid":"http:\/\/localhost\/wordpress\/?page_id=2"}},{"post":{"post_title":"Bonjour tout le monde!","guid":"http:\/\/localhost\/wordpress\/?p=1"}}]}
et si je laisse:

Code : Tout sélectionner

$posts[] = array('post'=>$post);
sortie du xml:

Code : Tout sélectionner

Erreur d'analyse XML : mal formé Emplacement : http://localhost/webservice/web-service.php?user=1&num=3 Numéro de ligne 1, Colonne 35 :<posts><post><post_title>A propos � jour</post_title><guid>http://localhost/wordpress/?page_id=2</guid></post><post><post_title>Bonjour tout le monde!</post_title><guid>http://localhost/wordpress/?p=1</guid></post></posts> ----------------------------------^
le script complet pour tester (avec wordpress):
<?php  
header('Content-type: text/html; charset=UTF-8'); 

if(isset($_GET['user']) && intval($_GET['user'])) {

	$number_of_posts = isset($_GET['num']) ? intval($_GET['num']) : 10; 
	$format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml'; 
	$user_id = intval($_GET['user']); 


	$link = mysql_connect('localhost','root','root') or die('erreur connex db');
	mysql_select_db('wordpress',$link) or die('erreur select db);


	$query = "SELECT post_title, guid FROM wp_posts WHERE post_author = $user_id AND post_status = 'publish' ORDER BY ID DESC LIMIT $number_of_posts";
	$result = mysql_query($query,$link) or die('Errant query:  '.$query);

	$posts = array();
	if(mysql_num_rows($result)) {
		while($post = mysql_fetch_assoc($result)) {
			//$posts[] = array('post'=>array_map('utf8_encode',$post));
			$posts[] = array('post'=>$post);
		}
	}

	if($format == 'json') {
		header('Content-type: text/plain');
		echo json_encode(array('posts'=>$posts));
	}
	else {
		header('Content-type: text/xml');
		echo '<posts>';
		foreach($posts as $index => $post) {
			if(is_array($post)) {
				foreach($post as $key => $value) {
					echo '<',$key,'>';
					if(is_array($value)) {
						foreach($value as $tag => $val) {
							echo '<',$tag,'>',($val),'</',$tag,'>';
						}
					}
					echo '</',$key,'>';
				}
			}
		}
		echo '</posts>';
	}
	@mysql_close($link);
}

?>

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 02:06
par stealth35
vérifie le adddefaultcharset de ton apache, tu peu regardé aussi du coté de php pour default-charset mais je te le conseil moins

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 02:15
par ilanb
Qunénie, j'ai ajouté "AddDefaultCharset utf-8" (par default grisé) dans httpd.conf (redémarrage serveur) même bordel. #-o

mêm chose pour le php.ini, ajouté "default_charset = "utf-8"" :twisted:

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 03:42
par stealth35
Qunénie, j'ai ajouté "AddDefaultCharset utf-8" (par default grisé) dans httpd.conf (redémarrage serveur) même bordel. #-o

mêm chose pour le php.ini, ajouté "default_charset = "utf-8"" :twisted:
t'es toujour marqué ISO-8859-1 dans FF même en mettant ca ?

Re: Webservice mysql-xml-json - FF et G-chrome problème accent

Posté : 01 août 2010, 10:30
par ilanb
Bon après vérification (j'ai plusieurs version de php...), je suis maintenant en UTF-8 quand je fais "information sur la page" mais mes accents sont toujours pas affiché ! :roll: