• ベストアンサー

phpMyAdmin - 2.8.2.4で『EUC-JP』を使うには?

レンタルサーバでPHP+MySql(EUC-JP)で構築しています。 phpMyAdmin - 2.6.3-pl1 では、ja-eucがデフォルトだったのでphpやDBをEUC-JPで設計しました。DBにインポートするテキストファイルもEUC⇒EUCなのでphpMyAdmin上でも、ブラウザ上(php)でも問題なく表示されていました。 しかし、 phpMyAdmin - 2.8.2.4 では、ja-eucが無くなってしまったため、 仕方なくUTF8でテキストを作成し、UTF8⇒EUCインポートを実行しました。 すると、phpMyAdmin上では普通に表示されるものの、 php(html)では完全に文字化けしてしまいます。 文字化けしているのはデータベースから取得した値のみです。 ソースファイルは全く同じで、異なるのはphpMyAdminのバージョンだけなのでどう対処すればよいかわかりません。 どうやったら文字化けせずに表示できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • calltella
  • ベストアンサー率49% (317/635)
回答No.3

・Mysqlに登録されているデータは本当にEUCですか? http://jp.php.net/manual/ja/function.mb-detect-order.php 私はUTF-8で登録されているんじゃないかと思います。 ・Mysqlのバージョンはなんですか? 私は5系なんじゃないかと思います。

banana_c
質問者

お礼

ご回答ありがとうございます。 あ、私も、そもそも『EUCで入っていないのでは?』と思いなおし、 先ほどmysql内のデータをダンプして調べてみたところ、やはりデータベース内のデータは『UTF8』でした。 ということは、インポート時のEUCオプションが効いていないことになります。UTF8⇒EUCに変更するオプションを使ってインポートしていたので、UTFのままだとは気が付きませんでした。 とりあえず原因が分かりましたので、php内でUTF8からEUCにコンバートすることで対処しました。 ありがとうございました。

その他の回答 (2)

  • calltella
  • ベストアンサー率49% (317/635)
回答No.2

Mysqlから取得したデータをPHPで表示させるのに phpMyAdminはなんの関係もありませんよ。 Mysqlから取得したデータをPHPで文字コード変換して表示してください。 http://jp.php.net/mb-convert-encoding

banana_c
質問者

補足

ご回答ありがとうございます。 AというサーバとBというサーバにある全てのファイルは同じです。 しかし、Aというサーバのphpでの出力は正常に表示され、Bというサーバのphpでの出力はDBから取得した値のみ文字化けします。 本来、サーバの設定やデータベースへのデータのインポート時の文字コードに何の関係も無いのであれば、結果は同じになるはずなので、そこが分かりません。 仮に文字コード変換で出来たとしても、今回の原因は不明となってしまい、今後Cというサーバに構築する際にまた同じようなことになる気がします。できればなぜこのようなことになるのか知りたいのですが、何かお心当たりなどありませんでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>phpMyAdmin - 2.8.2.4 またずいぶん古いバージョンですが、新しいのではだめなのでしょうか? せめてphpMyAdmin-2.9までいけば all-languagesバージョンでいけそうです いまは 2.11.2.2らしいです http://www.phpmyadmin.net/home_page/index.php

banana_c
質問者

補足

ご回答ありがとうございます。 レンタルサーバなので、そこらへんの設定は運営会社任せかも知れません。また、同じ会社でもアカウント(サーバ)によって設定が異なり、 私が利用している2つのアカウントでも ・phpMyAdmin - 2.6.3-pl1 ・phpMyAdmin - 2.8.2.4 の二つがあります。(サーバは契約時に自動的に割り振られるため、選択はできない) ちなみにphpMyAdmin - 2.6.3-pl1 では、shift-jisで同じ文字化け問題が発生していたため、『デフォルト文字コード』だったEUCで構築したところ、phpMyAdmin - 2.8.2.4 では前回デフォルトだったEUC自体が無くなって『UTF8がデフォルト』になってしまったため、再び文字化け問題に遭遇してしまいました。

関連するQ&A