- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでxampp環境下での文字化けについて)
phpでxampp環境下での文字化けについて
このQ&Aのポイント
- phpの文字コードはUTF8 データベース照合順序はutf8_general_ciにはしてあります。
- PHPからMySQLにデータ登録し、phpMyAdminで値を閲覧すると、日本語が文字化けしていますが、PHPで取得・表示は普通にできます。
- 解決方法としては、データベース接続後に「SET NAMES utf8」というクエリを発行するか、PHP5.2.2以降なら「mysql_set_charset('utf8');」を実行することができます。また、xampp_path/mysql/bin/my.iniとxampp_path/phpMyAdmin/config.inc.phpにも設定を追加・修正する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
xamppであればMySQL側を弄る必要はありません。 >もしくはPHP5.2.2以降なら「mysql_set_charset(‘utf8′);」を実行しても良い。 MySQL関数であればそうですが、すでにMySQL関数は「先がない」状態です。PDOやMySQLiを使ってください(マニュアルを読めば載っているのですが・・・)。 http://php.net/manual/ja/function.mysql-set-charset.php PDOなどで接続するのであれば、接続文字列(DSN)でcharsetを指定します。 $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass); set namesを使うのはDSNで指定できない(phpが5.3.6未満のケース)だけですが、その場合でも $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8); $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass, $options); のように書いておくといいです(わざわざ$pdo->query('set names utf8')を書くのは避ける)。