4

我从数据库中检索一个 mysqli-resultset,来自一个 utf-8 编码的表,然后插入到一个数组中:

$json = array();

$query = "select artikel_titel from tblArtikel";
if($result = mysqli_query($link, $query))
{
    while($line = mysqli_fetch_array($result, MYSQLI_NUM)) {
    array_push($json, $line);
}
echo json_encode($json);

该数组已正确构建,您可以在此处看到它 在 页面底部您可以看到由 json_encode 创建的错误。我怎样才能解决这个问题?

Warning: json_encode(): Invalid UTF-8 sequence in argument in /customers/6/0/6/onezeromany.com/httpd.www/php/getArticles.php on line 13 Warning: json_encode(): Invalid UTF-8 sequence in argument in /customers/6/0/6/onezeromany.com/httpd.www/php/getArticles.php on line 13 Warning: json_encode(): Invalid UTF-8 sequence in argument in /customers/6/0/6/onezeromany.com/httpd.www/php/getArticles.php on line 13
4

2 回答 2

9

您的数据中确实有无效的 UTF-8 序列;显然您的数据库结果在 ISO-8859-1 中。根据文档,仅适用json_encode于UTF-8 数据。您必须确保您的数据采用 UTF-8 格式,并且您的数据库连接也使用 UTF-8 格式;或者,您可以使用将结果转换为 UTF-8,然后再将它们提供给.iconv()json_encode

于 2012-07-10T12:26:11.233 回答
2

我遇到了同样的问题,在 mysqli connect 语句解决了问题之后使用了mysqli_set_charset 。

$con = mysqli_connect('localhost', 'my_user', 'my_password', 'test');
mysqli_set_charset($con, 'utf8');

希望能帮助到你!

于 2015-03-05T00:41:31.453 回答