La fonction Json_decode avec des caractères spéciaux
J'ai un gros problème d'affichage de données via Ajax de jQuery JSON pour mon Serveur. JSLint dire que les données sont OK et le Type de Contenu de la demande est définie à application/x-www-form-urlencoded; charset=UTF-8
. Le serveur s'exécute sur PHP 5.2.11 donc je ne peux pas utiliser json_last_error()
.
J'ai essayé url_decode, utf8_decode et html_entities_decode, mais rien ne semble fonctionner.
var_dump(json_decode($jdata));
renvoie la valeur null, mais si je fais un var_dump($jdata)
tout semble OK. $jdata
est le post de données:$jdata = $this->input->post('requestdata');
.
Voici quelques exemple de message de données s'emparer de Firebug:
{
"projectnumber": "345",
"projecdescription": "345",
"articles": [
{
"position": 1,
"article_id": 677,
"online_text": "3 Behälter; Band I-III nach indiv. Stückliste, Sprache: DE - Sprache: de"
},
{
"position": 2,
"article_id": 678,
"online_text": "2 Behälter; Band I-III nach indiv. Stückliste, Sprache: ### - Sprache: en"
}
]
}
Edit:
J'ai essayé ceci maintenant:
$string = $this->input->post('requestdata');
var_dump($string);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($string));
$json = json_decode($json);
var_dump($json);
Le résultat est:
chaîne(338) "{"projectnumber": "4444", "projecdescription": "4444", "articles": [{"position":1, "article_id": 676, "online_text": "### Behälter; Groupe I-III nach indiv. Stückliste, Sprache: DE
- Sprache: de"}, {"position":2, "article_id": 681, "online_text": "### Behälter; Groupe I-III nach indiv. Stückliste, Sprache: ###
- Language: fr"}]}"
NULL
Par collage à la chaîne JSON directement dans la source en PHP, il fonctionne, mais le faire de post pas!
double possible de la fonction json_decode est de retour nul en php
Êtes-vous sûr que vous avez une chaîne UTF8 sur le côté serveur? Essayez
var_dump(json_decode(utf8_encode($jdata)));
Ce qui est à l'intérieur de $jdata?
Voir la démo : codepad.viper-7.com/ZWZf0I
OriginalL'auteur fillibuster | 2012-10-16
Vous devez vous connecter pour publier un commentaire.
Vous rencontrez des erreurs en raison de la nouvelle ligne dans votre chaîne
Sortie
bon à savoir .. merci 🙂
OriginalL'auteur Baba
De vote pour le saut de ligne en trop
json_decode_nice + garder mais les sauts de ligne:
Si vous souhaitez conserver les retours à la ligne (juste d'échapper à la barre oblique.
Vous n'avez pas besoin de l'utf-8 encoder, si tout est en utf-8 (en-tête, db, etc)
merci pour ce commentaire!
Merci Bro vous avez sauvé mon temps
les savoirs traditionnels bro
OriginalL'auteur Hafenkranich
OriginalL'auteur sumit