0

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

4

2 回答 2

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 解析器将解码转义码。

于 2013-05-18T22:26:12.830 回答
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);
于 2015-02-27T06:07:19.183 回答