サーバ移転や、試験環境などの構築で、文字化けが発生することがしばしばある。
データベース接続まわりを除いてみると、大切な記述が欠けている。
ファイル名: /data/class/SC_DbConn.php
65行付近
$this->conn = $objDbConn; $this->conn->query("SET NAMES utf8"); $this->error_mail_to = DB_ERROR_MAIL_TO; $this->error_mail_title = DB_ERROR_MAIL_SUBJECT; $this->err_disp = $err_disp; $this->dbFactory = SC_DB_DBFactory_Ex::getInstance();
$this->conn->query("SET NAMES utf8");
を追記すれば解決する。
※ この作業を行うタイミングが重要です。
インストールのどのタイミングで行うか、DB接続直後です。
注意
エンコード関連を変更した後は、キャッシュファイルのクリアを忘れるべからず。
解説
php.ini のエンコード関係は、あまり指定しないのがサーバー屋の流儀である。
その場合、データベースの読み書きは、サーバーのデフォルト・エンコードで行われる。
サーバーのエンコードは、
最近は、UTF-8が多くなってきたが、以前はEUCが主流だった。
DBのエンコードとPHPファイルのエンコードが同じであっても、文字化けが発生する場合は、サーバーのデフォルトエンコードを疑うのが基本である。