utf 8

我有一个symfony应用程序,它使用json_encodejson_decode来记录一些价格。 问题是json_decode在一个文件中工作正常(我可以解码存储在我的PSQL数据库中的字符串),但是当我从其他文件调用它时, json_decode返回null,我检查了文件编码(全部是utf-8)表和数据库编码(UTF-8)。 所以我不知道问题出在哪里,也尝试过utf8_encode() ...

任何帮助将不胜感激。 谢谢。

这里是有效的编码json(这是一个由php json_encode编码的数组)

{"1":{"1":{"fechaInicio":"30-05-2011","precios":{"1":{"precio":"20000","abreviatura":"CLP"}},"fechaRetiro":"31-05-2011"}},"2":{"2":{"fechaInicio":"30-05-2011","precios":{"1":{"precio":"20000","abreviatura":"CLP"}},"fechaRetiro":"31-05-2011"}}}

阵列:

$preciosOfertor = Array ( [unidades] => Array ( [1] => Array ( [1] => Array ( [fechaInicio] => 30-05-2011 [precios] => Array ( [1] => Array ( [precio] => 20000 [abreviatura] => CLP ) ) [fechaRetiro] => 31-05-2011 ) ) [2] => Array ( [2] => Array ( [fechaInicio] => 30-05-2011 [precios] => Array ( [1] => Array ( [precio] => 20000 [abreviatura] => CLP ) ) [fechaRetiro] => 31-05-2011 ) ) ) ) 

编码它我使用:

$preciosOfertor = json_encode($preciosOfertor); 

然后我打电话

$precios = json_decode($databaseObject->getPreciosOfertor(),true); 

当我在编码数组的文件中使用json_decode时,但是当我在项目的其他文件中使用它时,我只是用var_dump()获得NULL。

按照建议安装Services_JSON,但现在我得到一个空数组

带有Services_JSON的编码json就是这样一个:

{"unidades":{"1":{"1":{"fechaInicio":"30-05-2011","precios":{"1":{"precio":"20000","abreviatura":"CLP"}},"fechaRetiro":"31-05-2011"}}}}

但是当我调用$ json-> decode()时,我得到Array()


好的,首先感谢大家的帮助。

我得到了解决方案,这一切都得益于Zend Json库。

Symfony使用转义策略来防止XSS攻击,SQL注入攻击等等。所以在我的情况下发生了什么,当我调用json_encode和json_decode时,它在Doctrine生成来代表我的对象的对象内部(在这种情况下为保留),所以因为它是对行数据(valoresOfertor)的本地调用,所以数据库中的数据未被转义,因此这些方法正常工作。

但是,当我尝试对预留类以外的行的值进行编码和解码时,Symfony使用了它的转义策略

"

成为

&quot

因此,尝试使用不同的JSON库,我使用了Zend,并看到显示的异常(语法错误:

    at Zend_Json::decode('{"unidades":{"1":{"1":{"fechaInicio":"30-05-2011","precios":{"1":{"precio":"20000","abreviatura":"CLP"}},"fechaRetiro":"31-05-2011"}},"2":{"2":{"fechaInicio":"30-05-2011","precios":{"1":{"precio":"20000","abreviatura":"CLP"}},"fechaRetiro":"31-05-2011"}}}}')
in SF_ROOT_DIR/apps/saas/modules/editreserva/templates/habitacionesSuccess.php line 20 ...

所以然后我添加了以下行:

htmlspecialchars_decode($jsonVariable);

它的工作。

我希望它能帮助别人,如果他对symfony和json进行相同的实验。


据我所知,在以前版本的PHP中,json_encode()和json_encode()中存在一个或多个错误。 您可以尝试将PHP更新到最新版本,或者您可以使用外部库对JSON进行编码和解码。 有一些,但我认为PEAR JSON是最好的。


它可能是目前的UTF-8 BOM。 尝试使用没有BOM编码的UTF。 同时回显json_last_error(),看看有什么问题。

编辑:

它是一个有效的JSON

链接地址: http://www.djcxy.com/p/57669.html

上一篇: utf 8

下一篇: Which is faster to parse? Serialized string or plain PHP or something else?