ここから本文です

解決済みの質問

知恵コレに追加する

サーバはさくらインターネットです。 レンタルサーバから専用サーバに移転したの...

buraburasekasekaさん

サーバはさくらインターネットです。

レンタルサーバから専用サーバに移転したのですが、
専用サーバではphpMyAdminで日本語データの文字化けが起きます。

どなたか、原因分かりますでしょうか?

専用サーバのphpMyAdminからDB作成の際、下記の設定で行い、

MySQLの文字セット UTF-8 Unicode (utf8)
MySQLの接続照合順序 utf8_unicode_ci
DB の照合順序 utf8_unicode_ci

レコードをINSERTする際、下記のように文字コードを指定し、
$sql=mb_convert_encoding($sql,"EUC-JP","EUC-JP");
execute_sql($con, $sql);

実行しましたら、phpMyAdmin内で日本語データが文字化けしました。
しかし、サイト内で表示しているDBデータ(日本語)は文字化けしませんでした。

DB の照合順序をutf8以外(ujis_japanese_ciなど)として、
DBを作った場合、レコードをINSERTしたら、
サイト内DBデータもphpMyAdmin内データもどちらも日本語が文字化けします。

また、レンタルサーバのphpMyAdminからDBデータをエクスポートして、
専用サーバのphpMyAdminからインポートした場合、
読み込むDBデータファイルの文字コードをUTF-8にしなければ、
phpMyAdmin内で日本語データが文字化けしてしまいます。
ただ、UTF-8にしてインポートしてもphpMyAdmin内では文字化けしませんが、
サイト内で表示しているDBデータは文字化けします。

専用サーバ情報は下記の通りです。

【専用サーバ】
OS:CentOS 5
Apache 2.2.3
PHP5.1.6
DBサーバ:MySQL 5.0.77

アップしているファイルの文字コード:EUC

ドキュメントルート直下に設置の.htaccess内は下記の通りです。
php_value include_path "/●●/PEAR/"
php_flag log_errors 'On'
php_flag register_globals 'On'
php_value mbstring.language "Japanese"
php_value mbstring.internal_encoding "EUC-JP"
php_flag mbstring.encoding_translation On
php_value default_charset "EUC-JP"
php_value mbstring.http_input auto
php_value mbstring.http_output "EUC-JP"
php_value mbstring.substitute_character none

文字化けが起きないようにする方法をお分かりの方、何卒よろしくお願いいたします。

補足
>hot_otanさん

UTF8のサーバかは分かりません。PHPファイルもテンプレファイルもEUCです。
一部ファイルでUTF8に変えてみましたが、DBのデータではない文字まで文字化けしてしまいました。

ドキュメントルート /home/▲▲▲/www
phpMyAdminのディレクトリ /home/phpmyadmin

となってます。phpMyAdminのディレクトリ内のファイルはsjisとなってます。

違反報告

ベストアンサーに選ばれた回答

hot_otanさん

やってることがちょっとわかりにくいんですが、PHP、DBともにUTF8のサーバでPHPをEUCにしてるって事で良いんですかね?
専用サーバーなのでサーバー設定自体変えるとかもできますが、使い勝手のよい設定になってるものをわざわざ難しい設定にする必要は無いですよね。

内容や後々のことを考えたら、PHPファイルをKanjiTranslatorでutf8に一括置換し、metaタグ内のcharsetもutf8に置換して、PHP・DBともにUTF8で運用する方が良いと思いますよ。
よっぽど特殊な文字使ってない限り、UTF8に変換しても問題は起こらないと思います。phpMyAdminも文字化けしなくてすむと思います。

PS
>一部ファイルでUTF8に変えてみましたが、DBのデータではない文字まで文字化け
.htaccessでPHPはEUCに設定されていますので、そのままでは当然文字化けになってしまいます。
文字コードの問題は慣れてる人でも、知らないサーバーを使う度に苦労させられますので、内部の文字コードがわからないレベルとなると、ここで変更するのは正直難しいかもしれませんね。

  • 違反報告
  • 編集日時:2010/4/1 04:50:14
  • 回答日時:2010/4/1 03:12:18

この質問は投票によってベストアンサーが選ばれました!

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 1点(5点満点中)1人が役に立つと評価しています。

あなたにおすすめの解決済みの質問

XAMPP、phpMyAdminのMySQLの文字セットを変更出来ません。 OSはWinXP XAMPP1.6.6 * Apache 2.2.8 + OpenSSL 0.9.8g * MySQL 5.0.51 * PHP 5.2.5 & PHP 4.4.8 (RC2) * phpMyAdmin 2.11.4 デフォルトで"MySQL の文字セット:UTF-8 U...
『 リナックスサーバー 』 PHPでmb_send_mailを使った時にかんして  CENTOS5  PHP5を使います。  「ヘッダーのみ文字化けしてしまいます↓」 mb_language( "Japanese" ); mb_internal_encoding( "EUC-JP" ); $s...
EUC-JPのデータをDBからcsvでエクスポート EUC-JPのデータをDBからcsvでエクスポートした際 エクセルでそのcsvを開くと文字化けが起きてしまいます。 何か回避する方法はありますでしょうか? DBからcsvでエクスポートする命令文...

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:PHP]

ただいまの回答者

18時28分現在

4267
人が回答!!

1時間以内に7,924件の回答が寄せられています。

>>回答ひろばに行く