Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut,
Je suis en train de passer une appli en UTF-8 et j'ai un probleme avec le Zend_Json::decode().
J'ai des expressions json stockées en base et dans maon ancienne version non utf8 l'expression est decodée correctement.
Par contre quand j'execute la meme code sur un serveur configuré pour l'UFT-8, j'ai une exception
<b>Fatal error</b>: Uncaught exception 'Zend_Json_Exception' with message 'Missing "," in object encoding:
J'ai essayé d'identifier le pb et cela apparait quand j'active l'option mbstring.func_overload dans mon httpd.conf
La version de Zend Framework utilisée est la 1.7.8
J'ai passé la journée a fouiller les forums mais je n'ai rien trouvé concernant ce pb. Quelqu'un a t'il une idée ?
Merci
Hors ligne
Zend_Json::decode() ne prendrait-il pas une chaine classique en entrée ?
A+JYT
Hors ligne
Non
/**
* Decodes the given $encodedValue string which is
* encoded in the JSON format
*
* Uses ext/json's json_decode if available.
*
* @param string $encodedValue Encoded in JSON format
* @param int $objectDecodeType Optional; flag indicating how to decode
* objects. See {@link Zend_Json_Decoder::decode()} for details.
* @return mixed
*/
public static function decode($encodedValue, $objectDecodeType = Zend_Json::TYPE_ARRAY)
Hors ligne
je sais qu'il n'y a rien dazns la doc qui le dit. Mais rien ne dit le contraire et par défaut beaucoup d'élément de l'API Zend utilise de simple chaine et pas des UTF-8
ne voyant pas d'indicateur à passer en paramètres pour indiquer à Zend_Json que ce qu'on lui donne n'est pas une simple string, j'en conclus que comme la majorité des composant il utilise des simple chaine et non de l'UTF-8
lorsqu'une API utilise de l'UTF-8 et uniquement de l'UTF-8 c'est indiqué dans la doc. je ne me souviens pas d'un cas où ce n'est pas mentionné.
Lorsqu'elle utilise plusieurs encodage il y a toujours un argument dans l'API pour indiquer lequel
A+JYT
Hors ligne
Apres plusieurs tests j'ai remarqué que le probleme vient de la configuration de mbstring.
En effet j'utilise l'overload avec ds ma configuration
php_value mbstring.func_overload 7
Si je desactive cette directive, plus de probleme
Si je mets la valeur a 3, plus de pb.
=> le probleme vient donc de la surcharge des expressions regulières par mbstring
J'ai remonté un bug la dessus apres de zend, on verra ce que ca donne.
HJ
Hors ligne
Pages: 1