Top > P_BLOG > MySQL 4.1以降での文字化け解決方法

MySQL 4.1以降での文字化け解決方法

修正 @ Jun 04, 2010 21:17:15

Tag: P_BLOG

背景

レンタルサーバーをXREA+からCORESERVERに移行する場合、MySQLのバックアップ(ダンプデータ)をそのまま移行すると文字化けするため、その解決方法をまとめておきます。

文字化けの要因

MySQLのバージョン違いによる、デフォルトの文字セットの違い。

サーバーXREA+CORESERVER
MySQLバージョン4.0.265.1.22-rc
文字コードサーバーujisujis,utf8,sjisから選択
クライアントujislatin1

MySQL 4.1以降ではクライアント側の文字コードが(通常)latin1であるため、データベース側の文字コードとの違いにより、日本語での文字化けが起こります。

MySQLをソースからインストールし直すことで解決できますが、レンタルサーバーでは不可能なため、他の解決方法をとる必要があります。

文字化け解決方法

P_BLOGプログラムの修正

P_BLOG実行時に、クライアントとサーバー双方の文字コードをUTF-8に設定するように、プログラムを修正します。具体的には、

mysql_connect

関数でデータベースに接続した直後に、次の一行を追加しします。

mysql_set_charset("utf8");

mysql_connect 関数を使っている以下の4ヵ所に追加します。(他のサーバーからの移行であれば fnc_base.inc.php だけでもOK)

  • include/fnc_base.inc.php 63 行目
  • SETUP/contents/default.inc.php 235 行目
  • SETUP/contents/step3.inc.php 29行目
  • var/vars-sample-rss/SETUP/DB_INSTALL.php 65 行目

P_BLOG環境設定

ブラウザからP_BLOGのサイト管理にログインし、「環境設定」のページで以下のように設定して保存します。

出力文字コードUTF-8
ユニコード変換Off
MySQL内部エンコードUTF-8

MySQLデータベースの作成

CORESERVERの管理画面にログインし、「データベース」のページで、MySQLのデータベースを作成します。このとき文字コードはUNICODEを選択しておきます。

SQLデータのインポート

phpMyAdminにログインし、旧サーバーのDBからエクスポートしたデータを、新しいDBにインポートします。インポートするファイルの文字セットは ujis を指定します。(旧DBの文字コードがEUC-JPの場合)

最後に以下の内容を確認します。

  • 各テーブルの照合順序が utf8_general_ci になっているか。
  • 各テーブルの内容を「表示」させて、文字化けしていないか。

以上問題が無ければ、P_BLOGでも文字化け無く表示できるはずです。

その他の文字化け解決方法