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 です。docsによると、UTF-8データでのみjson_encode機能します。データが 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 に答える