JSON_encode不处理特殊字符?

时间:2013-03-01 11:11:34

标签: php json character-encoding

我遇到一个问题,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;
    }

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

如何正确处理此问题?

2 个答案:

答案 0 :(得分:0)

尝试清理你的json

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

答案 1 :(得分:0)

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

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

这应该有用。

相关问题