Php 在json中编码查询数据库返回空值

Php 在json中编码查询数据库返回空值,php,json,encoding,utf-8,Php,Json,Encoding,Utf 8,我有一个用json编码的DB结果,以前我在将数据导入DB时遇到编码问题(phpmyadmin上的奇怪字符),但现在我在插入数据之前通过utf8_decode()修复了它 所以现在我检索了我的数据,但是字符串有问题 echo '<pre>'; var_dump($product); echo '<br>'; var_dump( json_encode($product)); echo '</pre>

我有一个用json编码的DB结果,以前我在将数据导入DB时遇到编码问题(phpmyadmin上的奇怪字符),但现在我在插入数据之前通过utf8_decode()修复了它

所以现在我检索了我的数据,但是字符串有问题

echo '<pre>';
        var_dump($product);
        echo '<br>';
        var_dump( json_encode($product));
        echo '</pre>';
        echo '<br>'.mb_detect_encoding($product->name);
        echo '<br>'.$product->name;
        echo '<br>'.mb_convert_encoding($product->name, 'ISO-8859-1');
        $product->name = 'H2O AUDIO Waterproof-Ohrhörer Surge Pro Mini BA1-GY';
        echo '<br>Revu encode: '.mb_detect_encoding($product->name);
        echo '<br>'.mb_detect_encoding($product->name);
        echo '<br>Revu: '.$product->name;
        echo '<br>'.mb_convert_encoding($product->name, 'ISO-8859-1');
        echo '<br>';
        var_dump( json_encode($product));
您可以看到“name”字段包含一些内容,但当我用json编码时,它会告诉我“null”…我知道json只在utf8中工作,这就是为什么我调用mb_detect_编码以确保我在utf8中

知道为什么“name”字段返回“null”吗?

您需要执行以下操作之一:

$product->name = iconv("THE_NAME_CHARSET","utf8",$product->name);
或:


编码后是否可以尝试调用json\u last\u error()查看是否存在任何错误请尝试使用:$product->name=iconv(“YOURCHARSET”,“utf8”,“$product->name”);
mb_convert_encoding($product->name,"utf8","THE_NAME_CHARSET");
$product->name = iconv("THE_NAME_CHARSET","utf8",$product->name);