[初回公開] 2008年02月22日
EC-CUBE をサーバにインストールして初期状態のサンプルサイトや管理画面をブラウザで表示した際に文字化けしていた場合に考えられる 3 つの原因と文字化けすることなく正常に日本語が表示されるようにする対応方法について紹介する。
このページの目次
1.EC-CUBE で文字化けする原因と対応方法
EC-CUBE が文字化けする原因は、主に文字コードが適切で無いことが挙げられる。
公開されている EC-CUBE のソースコードとブラウザで表示する文字コード(Content-Type)が UTF-8 になっているのに対して、データベースやサーバ側の設定が UTF-8 になっていないことが多い。
最新の EC-CUBE では文字コードが UTF-8 となっているので、データベースやプログラム(PHP)が UTF-8 になっているかが確認するポイントなる。
1-1.データベースの文字コード設定が UTF-8 ではない場合
MySQL や postgreSQL といったデータベースは基本となる文字コードを保持している。
そのため、データベースの設定で文字コードが UTF-8 以外になっている場合は EC-CUBE のプログラムがデータベースへ読み書きする際に文字コードの不一致を起こして文字化けの事象が発生する。
MySQL の場合はサーバの設定ファイルとなる my.ini 内の default-character-set の項目が UTF-8 になっているか確認する。
もし、UTF-8 になっていなければ次のように設定して MySQL を再起動する。
[mysql]
default-character-set=utf8
また、postgreSQL は後述のようにテーブルごとに文字コードが設定できるため、postgreSQL のサービス全体として文字コードの設定は持っていない。
1-2.作成したテーブルの文字コードが UTF-8 ではない場合
MySQL などデータベースのサービス全体として文字コードの設定を行う以外に、個々に作成するデータベースやテーブルごとにも文字コードを持つことができる。
この時、文字コードが UTF-8 以外だと文字化けの事象が発生する。
MySQL で作成したデータベースの文字コードがどのようになっているか確認する場合は下記のコマンドで確認することができる。
> show variables like “char%”;
このコマンドで実際に MySQL のテーブルの文字コードを確認したところ、下図のように latin1 になっていると文字化けが発生する。
テーブルごとに文字コードを UTF-8 にしたい場合は次のコマンドで変更することができる。
> ALTER TABLE {テーブル名] CONVERT TO CHARACTER SET utf8;
また、postgreSQL の場合はデータベース作成時に下記のように文字コードを指定して作成する。
> CREATE DATABASE {データベース名} ENCODING = ‘UTF8’ ・・・
1-3.PHP の文字コードが UTF-8 ではない場合
PHP が動作する場合は設定ファイルとなる php.ini に記載されている内容に沿って動作する。
この php.ini では文字コードの設定もあり、UTF-8 以外になっていると UTF-8 で保存されている EC-CUBE のプログラムと不一致を起こして文字化けすることがある。
php.ini で下記の設定項目を確認し、文字コードが UTF-8 以外になっている場合は変更する。
default_charset = “UTF-8”
mbstring.detect_order = UTF-8,EUC-JP,SJIS,JIS,ASCII
2.EC-CUBE の旧バージョンでの文字化けの注意点
EC-CUBE のプログラムはバージョン 2.0 系以降は UTF-8 になっているが、それ以前のバージョン 1 系は EUC-JP になっている。
そのため前述したようにデータべースや php.ini の文字コードを UTF-8 にしても文字コードの不一致で文字化けするため、文字化けが生じた場合は EC-CUBE のバージョンにも注意が必要である。
もしバージョン 1 系を使うのであればデータベース作成時に EUC-JP を指定すると解決する。
関連記事
EC-CUBE4 でシステムエラー画面ではなくデバッグ表示させる方法
EC-CUBE には「ページが見つかりません」や「システムエラー」など本来はウェブサーバ側で用意すべきエラー画面も予め用意されているが、カスタマイズしているとエラーログではわからないシステムエラ…
EC-CUBE で店舗や在庫場所の位置座標を登録して地図情報の中心から近い順番に表示する方法
EC-CUBE はインターネットショップのツールで地図や位置座標は関係しないと思われがちだが、カスタマイズして店舗や在庫の場所を位置座標として登録することで Google Map や Mapbox など地図サービスと…
EC-CUBE で新着情報やお知らせの表示件数を変更する方法
EC-CUBE の過去のバージョンでは新着情報やお知らせは一定の件数を上回ると古い情報が表示されなくなり別途バックナンバーを表示するカスタマイズが必要だったが、最近の EC-CUBE は古いお知らせ情報…