MySQLの文字コードを"UTF-8"に設定しているとき、PHPで文字化けになる場合の回避方法。
http://php.net/manual/ja/mysqli.set-charset.php
ココの方法で回避可能なのですが、DBに依存する部分を少なくしたいので、
mysqli を直接使うのではなく、できれば PEAR の DB クラスを使いたいです。
(上記のリンク先より)
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "test"); /* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } /* 文字セットを utf8 に変更します */ if (!$mysqli->set_charset("utf8")) { printf("Error loading character set utf8: %s\n", $mysqli->error); } else { printf("Current character set: %s\n", $mysqli->character_set_name()); } $mysqli->close(); ?>
PEARのDBクラスで同様の回避方法を見つけました。
上のソースの$mysqli は下のソースの $conn->connection にあたります。
なので、それに対してset_charset()を行えば同様のことができます。
<?php require_once("DB.php"); $dsn = "mysqli://my_user:my_password@localhost/test"; $conn = DB::connect($dsn); if (DB::isError($conn)) { die("接続に失敗しました。(T_T)<br/>" . $conn->getMessage()); } print "接続に成功しました。(^o^)v<br/>"; $conn->connection->set_charset("utf8"); // ★文字コードを"utf8"に設定 $conn->disconnect(); ?>