vartec これは(MySQLのインストールに応じて)問題の最も正しい解決策です。まず、MySQLの文字セット/エンコーディングの問題は、MySQLのマニュアル第9.1章「文字セットのサポート」 。あなたの場合、特に9.1.4。 「接続文字セットと照合」 最も関連性が高くなります。
簡単に言うと、MySQLは、サーバーで定義された内部文字セット/エンコーディングからすべての文字列データをトランスコードするため、クライアントアプリケーション(PHPスクリプトであるデータベースパーソクティブから通信)が期待している文字セット/エンコーディングを認識している必要があります。データベース、テーブル、または列レベルから接続文字セット/エンコーディングへ。クライアント側でUTF-8を使用しているため、UTF-8を使用していることをMySQLに通知する必要があります。これは、MySQLコマンドSET NAMES 'utf8'
によって実行されます。 これは、接続を開く際の最初のクエリとして送信する必要があります。インストールとPHPスクリプトで使用するMySQLクライアントライブラリに応じて、これは接続ごとに自動的に実行できます。
PDOを使用する場合は、構成パラメーターを設定するだけです
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
mysqliを使用して、クライアントの文字セット/エンコーディングを変更するのはさらに簡単です:
$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");
それが全体をより理解しやすくするのに役立つことを願っています。