JSON_encode不处理特殊字符


JSON_encode doesn't take care of special characters?

我有一个问题,json可以编码数组,但它不能正确解码它由于特殊字符。

我在stackoverflow上找到了这个函数,它试图提供帮助:

function escapeJsonString($value) 
{  # list from www.json.org: ('b backspace, 'f formfeed)
                $escapers = array("''", "/", "'"", "'n", "'r", "'t", "'x08", "'x0c");
                $replacements = array("''''", "''/", "'''"", "''n", "''r", "''t", "''f", "''b");
                $result = str_replace($escapers, $replacements, $value);
                return $result;
    }

但它只是一个字符列表,每次我得到一个新的特殊字符时,我都必须手动处理它,并将它添加到字符及其替换列表中。

我如何正确地照顾这个?

尝试清理json

$cleanJsonData = preg_replace("/[[:cntrl:]]/", "", $jsonData);
$myData = json_decode($cleanJsonData, TRUE);

json_decode排除输入字符串为utf-8编码。

<?php
$json = json_decode(utf8_encode($str));