我从数据库中检索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
答案 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');
希望它有所帮助!