Page 1 sur 1

Encodage json

Posté : 22 févr. 2012, 05:10
par rimie
Bonjour

Je fais une transmission de donnees via PHP/json, les lettres latines (a, b, c,...) se passent via json mais les autres caracteres me donnent un vide, cas des caracteres arabes:


verif.php:

<?php

$return_arr = array();

$pseudo = $_POST['username'];


// traitement de donnees


			
			$welcome = '<hr>';
			$welcome .= 'Bienvenue';
			$welcome .= ' '.$pseudo;

$return_arr["welcome"] = $welcome;

echo json_encode($return_arr);

?>

si le pseudo est en lettres latines ca marche, sinon il affiche Bienvenue et c'est tou

index.php:
$.ajax({
        type: "POST",
        url: "verif.php",
        data: dataString,
        dataType: "json",
        success: function(data) {
             
			 if(data.loginError == 0)
             {
             	$('.loginForm').fadeOut(3000);
             	$('span.showForm').fadeIn(3000).html(data.welcome);
             	
             	// resultat: Bienvenue (vide) en cas d'un utilisateur avec des caractes arabes
             	
             }
j'ai meme essaye l'encodage utf8 mais ca marche toujours pas

merci pour votre aide

Re: Encodage json

Posté : 22 févr. 2012, 09:53
par moogli
problème de charset ?

a tu essayé de ne passer que les données et ajouter la mise en forme en JS (ce n'est qu'une concaténation).


@+

Re: Encodage json

Posté : 22 févr. 2012, 11:28
par Shenryu
Salut,
Cette fonction ne fonctionne qu'avec des données encodées UTF-8.
Comment as-tu essayé l'encodage UTF-8 ?
$return_arr["welcome"] = utf8_encode($welcome);
N'oublies pas de définir tes encodages (header php, meta, fichier php).

++

Re: Encodage json

Posté : 22 févr. 2012, 14:22
par rimie
si j'ajoute:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
il n'affiche rien parce que c'est du json

Re: Encodage json

Posté : 22 févr. 2012, 14:44
par Shenryu
Le type text/json existe mais il faut le mettre au niveau du php.

Tu peux garder ta balise meta pour ta page HTML.

Re: Encodage json

Posté : 23 févr. 2012, 01:17
par AB
<?php
header('Content-type: text/html; charset=UTF-8');
A mettre en haut de page car il est très possible que l'entête apache soit toujours par défaut en iso et cette entête prime toujours sur celle que vous avez déclaré dans le meta html (excepté si vous pouvez configurer le serveur avec : AddDefaultCharset Off)

Pour plus d'info cf ce tuto

Re: Encodage json

Posté : 24 févr. 2012, 05:19
par rimie
je vais essayer avec le header