Zend_JSON:Coder le désordre - pourquoi?
Mon Zend_Json est le désordre de l'encodage d'un objet ici. Je suis le codage d'un tableau associatif qui contient deux éléments:
L'élément est un autre tableau associatif alors que l'élément 2 est une chaîne HTML. Il est gaffes de telle sorte que la chaîne Html partie contient la valeur NULL!!?!?!?!?
Heres l'élément Clair, quand je fais un var_dump sur elle...désolé pour le looong élément...
Son très irrégulier, je ne comprends pas quel est mauvais ici...
array (
'map' =>
array (
0 =>
array (
'id' => '1403',
'name' => 'Amborovy Airport (Philibert Tsiranana Airport)',
'label' => 'Amborovy Airport (Philibert Tsiranana Airport)',
'html' => 'Amborovy Airport (Philibert Tsiranana Airport)',
'lat' => '-0.666944',
'lng' => '46.3517',
),
1 =>
array (
'id' => '6160',
'name' => 'Generalissimo Francisco de Miranda Airbase',
'label' => 'Generalissimo Francisco de Miranda Airbase',
'html' => 'Generalissimo Francisco de Miranda Airbase',
'lat' => '0.485',
'lng' => '-66.8436',
),
2 =>
array (
'id' => '7808',
'name' => 'Tirana International Airport',
'label' => 'Tirana International Airport',
'html' => 'Tirana International Airport',
'lat' => '41.4150929722',
'lng' => '19.7233001667',
),
3 =>
array (
'id' => '20881',
'name' => 'Tiranë Heliport',
'label' => 'Tiranë Heliport',
'html' => 'Tiranë Heliport',
'lat' => 41.315865416667,
'lng' => 19.888245972222,
),
4 =>
array (
'id' => '5218',
'name' => 'Abadan Airport',
'label' => 'Abadan Airport',
'html' => 'Abadan Airport',
'lat' => '0.371111',
'lng' => '48.2283',
),
5 =>
array (
'id' => '5330',
'name' => 'Lar Airport',
'label' => 'Lar Airport',
'html' => 'Lar Airport',
'lat' => '0.673056',
'lng' => '54.3814',
),
6 =>
array (
'id' => '7808',
'name' => 'Tirana International Airport',
'label' => 'Tirana International Airport',
'html' => 'Tirana International Airport',
'lat' => '41.4150929722',
'lng' => '19.7233001667',
),
7 =>
array (
'id' => '20881',
'name' => 'Tiranë Heliport',
'label' => 'Tiranë Heliport',
'html' => 'Tiranë Heliport',
'lat' => 41.315865416667,
'lng' => 19.888245972222,
),
8 =>
array (
'id' => '5218',
'name' => 'Abadan Airport',
'label' => 'Abadan Airport',
'html' => 'Abadan Airport',
'lat' => '0.371111',
'lng' => '48.2283',
),
9 =>
array (
'id' => '5225',
'name' => 'Ahvaz Airport',
'label' => 'Ahvaz Airport',
'html' => 'Ahvaz Airport',
'lat' => '0.337431',
'lng' => '48.762',
),
10 =>
array (
'id' => '5242',
'name' => 'Ardabil Airport',
'label' => 'Ardabil Airport',
'html' => 'Ardabil Airport',
'lat' => '0.325556',
'lng' => '48.4242',
),
11 =>
array (
'id' => '5243',
'name' => 'Asalouyeh Airport',
'label' => 'Asalouyeh Airport',
'html' => 'Asalouyeh Airport',
'lat' => '0.481389',
'lng' => '52.6153',
),
12 =>
array (
'id' => '5251',
'name' => 'Bandar Abbas International Airport',
'label' => 'Bandar Abbas International Airport',
'html' => 'Bandar Abbas International Airport',
'lat' => '0.218056',
'lng' => '56.3778',
),
13 =>
array (
'id' => '5259',
'name' => 'Birjand Airport',
'label' => 'Birjand Airport',
'html' => 'Birjand Airport',
'lat' => '0.898056',
'lng' => '59.2661',
),
14 =>
array (
'id' => '5278',
'name' => 'Dezful Airport',
'label' => 'Dezful Airport',
'html' => 'Dezful Airport',
'lat' => '0.434444',
'lng' => '48.3976',
),
15 =>
array (
'id' => '5306',
'name' => 'Jiroft Airport',
'label' => 'Jiroft Airport',
'html' => 'Jiroft Airport',
'lat' => '0.726944',
'lng' => '57.6703',
),
16 =>
array (
'id' => '5326',
'name' => 'Konarak Airport',
'label' => 'Konarak Airport',
'html' => 'Konarak Airport',
'lat' => '0.443333',
'lng' => '60.3819',
),
17 =>
array (
'id' => '5330',
'name' => 'Lar Airport',
'label' => 'Lar Airport',
'html' => 'Lar Airport',
'lat' => '0.673056',
'lng' => '54.3814',
),
18 =>
array (
'id' => '5331',
'name' => 'Lavan Airport',
'label' => 'Lavan Airport',
'html' => 'Lavan Airport',
'lat' => '0.810278',
'lng' => '53.3561',
),
19 =>
array (
'id' => '5359',
'name' => 'Parsabad-Moghan Airport',
'label' => 'Parsabad-Moghan Airport',
'html' => 'Parsabad-Moghan Airport',
'lat' => '0.603606',
'lng' => '47.8815',
),
20 =>
array (
'id' => '5361',
'name' => 'Persian Gulf Airport (Khalije Fars Airport)',
'label' => 'Persian Gulf Airport (Khalije Fars Airport)',
'html' => 'Persian Gulf Airport (Khalije Fars Airport)',
'lat' => '0.379444',
'lng' => '52.7375',
),
21 =>
array (
'id' => '5393',
'name' => 'Shahid Sadooghi Airport',
'label' => 'Shahid Sadooghi Airport',
'html' => 'Shahid Sadooghi Airport',
'lat' => '0.905',
'lng' => '54.2764',
),
22 =>
array (
'id' => '5411',
'name' => 'Tabriz International Airport',
'label' => 'Tabriz International Airport',
'html' => 'Tabriz International Airport',
'lat' => '0.133889',
'lng' => '46.235',
),
23 =>
array (
'id' => '1416',
'name' => 'Arrachart Airport',
'label' => 'Arrachart Airport',
'html' => 'Arrachart Airport',
'lat' => '-0.349167',
'lng' => '49.2917',
),
24 =>
array (
'id' => '7808',
'name' => 'Tirana International Airport',
'label' => 'Tirana International Airport',
'html' => 'Tirana International Airport',
'lat' => '41.4150929722',
'lng' => '19.7233001667',
),
25 =>
array (
'id' => '20881',
'name' => 'Tiranë Heliport',
'label' => 'Tiranë Heliport',
'html' => 'Tiranë Heliport',
'lat' => 41.315865416667,
'lng' => 19.888245972222,
),
),
'html' => '<div><b>Search Results for terms \'Iran\'</b> </div><a class="map-link" href="javascript:void(0);" onclick="toggleMapsSearch(\'name\');">4 results of Names with "Iran"</a><div id="map-results-name" class="map-results-nubbin" style="display:none;"><a class="map-sub-links" href="javascript:mapClickHandler(\'1403\')">Amborovy Airport (Philibert Ts<span Style="color:red; Font-weight:bold;">Iran</span>ana Airport)</a><a class="map-sub-links" href="javascript:mapClickHandler(\'6160\')">Generalissimo Francisco De M<span Style="color:red; Font-weight:bold;">Iran</span>da Airbase</a><a class="map-sub-links" href="javascript:mapClickHandler(\'7808\')">T<span Style="color:red; Font-weight:bold;">Iran</span>a International Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'20881\')">T<span Style="color:red; Font-weight:bold;">Iran</span>ë Heliport</a></div><a class="map-link" href="javascript:void(0);" onclick="toggleMapsSearch(\'city\');">4 results of Cities with "Iran"</a><div id="map-results-city" class="map-results-nubbin" style="display:none;"><a class="map-sub-links" href="javascript:mapClickHandler(\'5218\')">Abadan, <span Style="color:red; Font-weight:bold;">Iran</span> : Abadan Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5330\')">Lar, <span Style="color:red; Font-weight:bold;">Iran</span> : Lar Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'7808\')">T<span Style="color:red; Font-weight:bold;">Iran</span>a : Tirana International Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'20881\')">T<span Style="color:red; Font-weight:bold;">Iran</span>a : Tiranë Heliport</a></div><a class="map-link" href="javascript:void(0);" onclick="toggleMapsSearch(\'country\');">15 results of Countries with "Iran"</a><div id="map-results-country" class="map-results-nubbin" style="display:none;"><a class="map-sub-links" href="javascript:mapClickHandler(\'5218\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Abadan Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5225\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Ahvaz Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5242\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Ardabil Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5243\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Asalouyeh Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5251\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Bandar Abbas International Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5259\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Birjand Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5278\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Dezful Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5306\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Jiroft Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5326\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Konarak Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5330\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Lar Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5331\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Lavan Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5359\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Parsabad-Moghan Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5361\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Persian Gulf Airport (Khalije Fars Airport)</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5393\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Shahid Sadooghi Airport</a><a class="map-sub-links" href="javascript:mapClickHandler(\'5411\')"><span Style="color:red; Font-weight:bold;">Iran</span> : Tabriz International Airport</a></div>',
)
Et voici ce qui se passe lorsque j'essaie d'encoder en JSON à l'aide de Zends_JSON classe...
{"map":[{"id":"1403","name":"Amborovy Airport (Philibert Tsiranana Airport)","label":"Amborovy Airport (Philibert Tsiranana Airport)","html":"Amborovy Airport (Philibert Tsiranana Airport)","lat":"-0.666944","lng":"46.3517"},{"id":"6160","name":"Generalissimo Francisco de Miranda Airbase","label":"Generalissimo Francisco de Miranda Airbase","html":"Generalissimo Francisco de Miranda Airbase","lat":"0.485","lng":"-66.8436"},{"id":"7808","name":"Tirana International Airport","label":"Tirana International Airport","html":"Tirana International Airport","lat":"41.4150929722","lng":"19.7233001667"},{"id":"20881","name":null,"label":null,"html":null,"lat":41.315865416667,"lng":19.888245972222},{"id":"5218","name":"Abadan Airport","label":"Abadan Airport","html":"Abadan Airport","lat":"0.371111","lng":"48.2283"},{"id":"5330","name":"Lar Airport","label":"Lar Airport","html":"Lar Airport","lat":"0.673056","lng":"54.3814"},{"id":"7808","name":"Tirana International Airport","label":"Tirana International Airport","html":"Tirana International Airport","lat":"41.4150929722","lng":"19.7233001667"},{"id":"20881","name":null,"label":null,"html":null,"lat":41.315865416667,"lng":19.888245972222},{"id":"5218","name":"Abadan Airport","label":"Abadan Airport","html":"Abadan Airport","lat":"0.371111","lng":"48.2283"},{"id":"5225","name":"Ahvaz Airport","label":"Ahvaz Airport","html":"Ahvaz Airport","lat":"0.337431","lng":"48.762"},{"id":"5242","name":"Ardabil Airport","label":"Ardabil Airport","html":"Ardabil Airport","lat":"0.325556","lng":"48.4242"},{"id":"5243","name":"Asalouyeh Airport","label":"Asalouyeh Airport","html":"Asalouyeh Airport","lat":"0.481389","lng":"52.6153"},{"id":"5251","name":"Bandar Abbas International Airport","label":"Bandar Abbas International Airport","html":"Bandar Abbas International Airport","lat":"0.218056","lng":"56.3778"},{"id":"5259","name":"Birjand Airport","label":"Birjand Airport","html":"Birjand Airport","lat":"0.898056","lng":"59.2661"},{"id":"5278","name":"Dezful Airport","label":"Dezful Airport","html":"Dezful Airport","lat":"0.434444","lng":"48.3976"},{"id":"5306","name":"Jiroft Airport","label":"Jiroft Airport","html":"Jiroft Airport","lat":"0.726944","lng":"57.6703"},{"id":"5326","name":"Konarak Airport","label":"Konarak Airport","html":"Konarak Airport","lat":"0.443333","lng":"60.3819"},{"id":"5330","name":"Lar Airport","label":"Lar Airport","html":"Lar Airport","lat":"0.673056","lng":"54.3814"},{"id":"5331","name":"Lavan Airport","label":"Lavan Airport","html":"Lavan Airport","lat":"0.810278","lng":"53.3561"},{"id":"5359","name":"Parsabad-Moghan Airport","label":"Parsabad-Moghan Airport","html":"Parsabad-Moghan Airport","lat":"0.603606","lng":"47.8815"},{"id":"5361","name":"Persian Gulf Airport (Khalije Fars Airport)","label":"Persian Gulf Airport (Khalije Fars Airport)","html":"Persian Gulf Airport (Khalije Fars Airport)","lat":"0.379444","lng":"52.7375"},{"id":"5393","name":"Shahid Sadooghi Airport","label":"Shahid Sadooghi Airport","html":"Shahid Sadooghi Airport","lat":"0.905","lng":"54.2764"},{"id":"5411","name":"Tabriz International Airport","label":"Tabriz International Airport","html":"Tabriz International Airport","lat":"0.133889","lng":"46.235"},{"id":"1416","name":"Arrachart Airport","label":"Arrachart Airport","html":"Arrachart Airport","lat":"-0.349167","lng":"49.2917"},{"id":"7808","name":"Tirana International Airport","label":"Tirana International Airport","html":"Tirana International Airport","lat":"41.4150929722","lng":"19.7233001667"},{"id":"20881","name":null,"label":null,"html":null,"lat":41.315865416667,"lng":19.888245972222}],"html":null}
Avis à la fin de l'immense bruit sourd de HTML DISPARU, remplacé par une valeur null.... ce qui se passe ici 🙁
MODIFIER
Après quelques recherches, j'ai trouvé cette erreur dans mes journaux d'erreur:
PHP Warning: json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in C:\wamp\www\fltdata\library\Zend\Json.php
Je pense qu'il pourrait avoir quelque chose à voir avec le problème que je me pose? Comment puis-je résoudre ce problème?
MODIFIER
Ma version de Php 5.2.9-2 - je doute que cela est dû à la question qui était dans les versions antérieures à 5.2.7 aider... ici les gars s'il vous plaît!!!
MODIFIER
De l'exécution de l'objet à travers json_encode() renvoie le même résultat et je reçois le même message d'erreur:
PHP Warning: json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in...
Je suis perplexe ici 🙁
SOLUTION
WOO HOOO!!!! J'ai compris: je viens de lancer le code html variable de chaîne par une fonction utf8_encode et puis exécutez le JSON coder la fonction:
$result['html'] = utf8_encode($result['html']);
Et ça fonctionne, Merci à tous pour toute l'aide les gars, je ressens fortement limitée par ne pas être en mesure de voter plus d'une fois pour chacun des postes, ici, vous avez tous été un exceptionnel aider 😀 Merci encore!!!
Note à ajouter: Il semble que le php d'erreur que vous avez indique exactement ce problème.
Oh - est-il un autre moyen de contourner cela 🙁
Je viens de remarquer :-S ma version de Php 5.2.9-2 - n'est-ce pas assez bon?
OriginalL'auteur Ali | 2009-11-16
Vous devez vous connecter pour publier un commentaire.
Résoudre ce problème en mettant à jour votre version de PHP à une version ultérieure à la version 5.2.7.
Il y avait un sérieux UTF-8 bug en PHP json_encode fonction avant cette version. Voir la changelog pour plus de détails.
Depuis que vous avez remarque que vous utilisez la version de PHP 5.2.9.2 votre version devrait être bon 🙂 Avez-vous essayé de routage sur le contenu spécifique de l'html par PHP json_encode() manuellement?
Ou peut-être par le biais de utf8_encode() ou utf8_decode()?
Je viens de remarquer :-S ma version de Php 5.2.9-2 - n'est-ce pas assez bon?
Je ne suis pas sûr de la façon de le faire manuellement - de quoi ai-je besoin de code, je suis juste d'appeler un simple: Zend_Json::encode($obj)
Cours d'exécution à travers json_encode() donne le même résultat 🙁
OriginalL'auteur Huppie
Je ne vois qu'une possible zone où la valeur NULL peut être retourné à partir de Encoder.php. J'avais commencer le débogage en faisant quelques var_dumps l'intérieur de cette fonction dans Zend/Json/Encoder.php
Je ne suis pas tout à fait sûr de savoir pourquoi vous êtes HTML chaîne ne serait pas reconnu en tant que tel, mais je pourrais essayer de typecasting avant l'encodage.
De vérifier ma mise à jour...je suis un UTF avertissement ici
OriginalL'auteur Corey Ballou
Cela se produit généralement si vous utilisez
substr()
ou de l'utilisation$somestring[0]
sur une chaîne utf-8 qui a multibyte lettres. Utilisationmb_
préfixé fonctions pour éditer ce genre de données, alors vous n'aurez pas de problème avecjson_encode()
OriginalL'auteur Artjom Kurapov