JSON编码PHP5.3上的unicode问题

时间:2013-05-18 22:04:21

标签: php json joomla2.5

json_encode之后的希伯来语字符串如下所示: [{ “ID”: “1”, “值”: “\ u05d1 \ u05dc \ u05d0 \ u05d2 \ u05df”} 任何想法这是什么编码,如何让它工作或再次可读? 顺便说一句,这是一个运行在PHP 5.3上的Joomla系统,字符串来自后期请求,而不是数据库和UTF-8元标记确实存在。

2 个答案:

答案 0 :(得分:0)

这就是JSON如何编码非ASCII字符。当您通过 JSON解析器传递文本时,该文本将再次可读。

PHP 5.4为json_encodeJSON_UNESCAPED_UNICODE定义了一个新选项,它可以通过原样传递UTF-8文本而不将其转换为转义码。由于您使用的是PHP 5.3,因此无法使用它,但如果您使用的是5.4,那么它将如何使用:

$json = json_encode($obj, JSON_UNESCAPED_UNICODE); // PHP 5.4 required

但是,这不应该是必需的,因为JSON解析器将解码转义码。

答案 1 :(得分:0)

$encoded = json_encode($json);

$unescaped = preg_replace_callback('/\\\\u(\w{4})/', function ($matches) {
            return html_entity_decode('&#x' . $matches[1] . ';', ENT_COMPAT,'UTF-8');
        }, $encoded);

file_put_contents('sample.json', $unescaped);