一応、ショップとしては動いていたので。。ほったらかし。。何年だよ。
そう。ほったらかしにしていた文字コードの問題。
EC-CUBE 1系は、EUC_JPが基本でした。MySQLは。。文字化け問題が多い。
PostgreSQL に移行したいわけですが、その前に処方処置しないと、
現状どうにもなんない。
表。ショップサイトは何故かちゃんと文字表示できている。
データベースが失敗でUTF-8になっているためテレコ?で表はうまく表示される??
phpMyAdmin でデータベースを見ると。。文字化けしまくり(爆
ので、
Mysqlからデータのダンプ、リストアで修復する。
# mysqldump -u root -p test_db –default-character-set=latin1 > /tmp/dbbackup_test
# vi /tmp/dbbackup_test
/*!40101 SET NAMES latin1 */;
↓
/*!40101 SET NAMES ujis */;:%s/utf8/ujis/g ← テーブルなどのエンコードをすべてEUC_JPに変更
phpMyAdmin 上などからでも 「eucjpms_japanese_ci」 で
新しいデータベース(test_new_db)を作成。。そこにリストア・修復。
# mysql test_new_db -u root -p < /tmp/dbbackup_test
リストアすれば、一応ちゃんとした?!データベースが出来上がります。
さて、ここから EC-CUBE+MySQLでの文字化け根本対策。
「install.inc」で参照データベースを新しいデータベースのかえると、
こんどはショップ表が文字化けします。「???」だらけです。
「data/class/SC_DbConn.php」 の33行目あたり
「$this->dsn = $dsn;」 の後に
$buf = $objDbConn->prepare(‘SET NAMES eucjpms’) ;
$objDbConn->Execute($buf) ;
の2行を追加すれば。。
サイトのほうでもちゃんと表示できます。
これで、ずーっと放置していた文字化け問題が解決しました。
次は、PostgreSQL 移行でデータベースのパフォーマンスアップですな。
なんでEC-CUBE は、PostgreSQL に最適化されてるんですかね。。