0

とにかくデータベースに関連して私が行ってきたことはすべて、json_encode(): 無効な utf-8 シーケンス警告をスローします。

以前はドクトリンの使用法が原因で、対処できなかったので、プロジェクトで別のことを始めました...しかし、今では PDO 接続を 1 か所で使用する必要があり、問題が再発しました。

一部のランダムなデータベース構成でも警告が表示されます (ただし、ホスト = 'localhost' の場合)。


コード:

$dsn = 'mysql:dbname='.$form['dbname']->getData().';host='.$form['host']->getData();
$pdo = new \PDO($dsn, $form['username']->getData(), $form['password']->getData());

入力例:

dbname = 'fdsfdsf'
username = 'fdsfdsf'
password = 'fsdfds'
host = 'localhost'

正確なエラー:

ContextErrorException: Warning: json_encode(): Invalid UTF-8 sequence in argument in C:\xampp\htdocs\cc\app\cache\dev\classes.php line 4520

私はすでに何を試しましたか?

  1. mysql_set_charset()
  2. 入力文字列のエスケープ
  3. @構文
  4. コントローラーファイルの utf8 エンコーディングの設定
  5. mysql テーブル/データベースの utf8-general エンコーディングの設定

    $dsn = 'mysql:dbname='.htmlentities($form['dbname']->getData(), ENT_QUOTES, 'utf-8', FALSE).';host='.htmlentities($form['host']->getData(), ENT_QUOTES, 'utf-8', FALSE);
    $pdo = @new \PDO($dsn, htmlentities($form['username']->getData(), ENT_QUOTES, 'utf-8', FALSE), htmlentities($form['password']->getData(), ENT_QUOTES, 'utf-8', FALSE));
    mysql_set_charset('utf-8');
    

どうしたの?

4

1 に答える 1