json_encode utf-8问题

时间:2012-07-10 12:15:48

标签: php json

我从数据库中检索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);

数组已正确构建,you can see it here 在页面底部,您可以看到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

2 个答案:

答案 0 :(得分:9)

数据中的UTF-8序列无效;显然你的数据库结果是ISO-8859-1。根据{{​​3}},json_encode仅使用 包含UTF-8数据。您必须确保您的数据是UTF-8,并且您的数据库连接也使用UTF-8;或者,您可以使用the docs将结果转换为UTF-8,然后再将其转换为json_encode

答案 1 :(得分:2)

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

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

希望它有所帮助!