将压缩后的数据编码为json字符串

But*_*fly 2 php json gzip

我正在压缩数组,如下所示,

\n\n
<?php\n    $input = array('name'=>'PHP');\n    $compressed = gzcompress(serialize($input));\n\n    echo '<pre>'; print_r($compressed);\n?>\n
Run Code Online (Sandbox Code Playgroud)\n\n

它正在打印如下数据

\n\n
x\xc5\x93K\xc2\xb42\xc2\xb4\xc2\xaa.\xc2\xb62\xc2\xb1R\xc3\x8aK\xc3\x8cMU\xc2\xb2.\xc2\xb62\xc2\xb6R\n\xc3\xb0P\xc2\xb2\xc2\xaenJ\xc2\xbb\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,我想转换$compressed为 json 字符串。由于压缩数据包含特殊字符,它会抛出错误,所以我尝试JSON_UNESCAPED_UNICODE下面是代码片段。

\n\n
<?php\n    // $compressed value getting from above script\n    echo json_encode($compressed,JSON_UNESCAPED_UNICODE);\n?>\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它仍然不起作用。任何人都可以建议如何将压缩数据编码为 json 字符串。

\n

小智 5

尝试使用:

$data = base64_encode(gzcompress(serialize($input)));
Run Code Online (Sandbox Code Playgroud)

要恢复回来:

$input = unserialize(gzuncompress(base64_decode($data)));
Run Code Online (Sandbox Code Playgroud)