MySQLを使ってEC-CUBEをインストールし、文字化けしているという報告が公式サイトの方で頻繁に見受けられる。これはまぁ、言ってみればMySQL4.1以降でデータベースの文字列エンコードの扱い方が変わった為の弊害という事になるんだけど、とにかくそのせいでEC-CUBEが文字化けして使えないという人は潜在人数にして結構いそうな気がするので解決法を書いておく事にする。
解決法1:PostgreSQLにする。
上で書いたように、これはMySQL4.1以降の文字列エンコードの扱い方が変わった事による弊害なので、PostgreSQLにすれば発生しない。
Windowsだと検索速度もPostgreSQLの方が速い為、そう出来るのであればPostgreSQLで運用するのも1つの手だと思う。
解決法2:SC_DbConn.phpを少し変更して文字化けを解消する。
レンタルサーバーの都合により、どうしてもMySQLでやらなければならない人の方が恐らくはずっと多いだろう。だからそういった人を捨てるという選択肢はありえない。EC-CUBEにはコミュニティ版とも呼ぶべき、UTF-8のバージョンが非公式で存在しているんだけど、その改造の一部を適用する事でEUC-JPの運用でも文字化けしてるって人でも文字化けを解消する事が出来る。具体的には、data/class/SC_DbConn.phpの33行目、
$this->dsn = $dsn;
の行の次の行からに、以下2行を挿入する。
$buf = $objDbConn->prepare('SET NAMES eucjpms') ;
$objDbConn->Execute($buf) ;
上記のeucjpmsの部分は、データベースをujisで運用している人はujisに変更して欲しい。
以上の変更を予めSC_DbConn.phpに施してから、改めてインストールしなおして見て欲しい。それで恐らく文字化けは解消されている筈だ。