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

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


&tag(P_BLOG);

#contents

*背景 [#led86f01]
レンタルサーバーを[[''XREA+''>http://www.xrea.com/?action=adfree]]から[[''CORESERVER''>http://www.coreserver.jp/]]に移行する場合、MySQLのバックアップ(ダンプデータ)をそのまま移行すると文字化けするため、その解決方法をまとめておきます。

*文字化けの要因 [#q70fed70]
MySQLのバージョン違いによる、デフォルトの文字セットの違い。
|>|~サーバー|~XREA+|~CORESERVER|h
|>|MySQLバージョン|4.0.26 |5.1.22-rc|
|文字コード|サーバー|ujis|ujis,utf8,sjisから選択|
|~|クライアント|ujis|latin1|
|~文字コード|~サーバー|ujis|ujis,utf8,sjisから選択|
|~|~クライアント|ujis|latin1|
MySQL 4.1以降ではクライアント側の文字コードが(通常)''latin1''であるため、データベース側の文字コードとの違いにより、日本語での文字化けが起こります。

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

*文字化け解決方法 [#va947904]
**P_BLOGプログラムの修正 [#b29f8fb5]
P_BLOG実行時に、クライアントとサーバー双方の文字コードをUTF-8に設定するように、プログラムを修正します。具体的には、
geshi(PHP){{
#geshi(PHP){{
mysql_connect
}}
関数でデータベースに接続した直後に、次の一行を追加しします。
geshi(PHP){{
#geshi(PHP){{
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環境設定 [#l6285b27]
ブラウザからP_BLOGのサイト管理にログインし、「環境設定」のページで以下のように設定して保存します。
|出力文字コード|UTF-8|
|ユニコード変換|Off|
|MySQL内部エンコード|UTF-8|
|~出力文字コード|UTF-8|
|~ユニコード変換|Off|
|~MySQL内部エンコード|UTF-8|

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

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

最後に以下の内容を確認します。
-各テーブルの照合順序が ''utf8_general_ci'' になっているか。
-各テーブルの内容を「表示」させて、文字化けしていないか。

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

*その他の文字化け解決方法 [#ce095f47]
-[[Reread : P_BLOG ver1.2 がどうしても文字化けする時の解決方法>http://text.readalittle.net/article.php?id=274]]
-[[FXテクニカル分析&業者比較Blog : サーバー移転完了 XREA+からCORESERVER(コアサーバー)へ Movable Type4.21引っ越し完全マニュアル データベースMySQL 4から5へ移行する方法>http://www.fxtechnical.net/2008/10/_xreacoreserver_movablety.html]]