- ベストアンサー
XAMPPでMySQLで文字化け、文字コード設定について
MySQLの文字セット: UTF-8 Unicode (utf8)が変更できない。(できればSJISにしたい) 環境: 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 症状: コマンドラインから作った全角文字を含む簡易テーブルについて。 ブラウザからphpMyAdminで確認すると文字化けせず読めるが、 DOSからコマンド"select"で確認すると文字化けしてしまう。 DOS窓からコマンド入力で簡単なテーブルsampleを作る。 東京,tokio Kanagawa,kanagawa とうきょう,tokio mysql> select * from sample; +------------+----------+ | ken | kencho | +------------+----------+ | | tokio | | Kanagawa | kanagawa | | ニ、ォ、 | tokio | +------------+----------+ mysql> status Server characterset: sjis Db characterset: sjis Client characterset: sjis Conn. characterset: sjis mysql> show variables like '%char%'; +--------------------------+-----------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | sjis | | character_set_filesystem | binary | | character_set_results | sjis | | character_set_server | sjis | | character_set_system | utf8 | | character_sets_dir | _xampp_mysql_share_charsets_ | +--------------------------+-----------------------------------+ character_set_systemだけがutf8なのは何故でしょうか? 編集したファイル: <my.ini(C:\WINDOWS)> [mysqld] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis <my.cnf(C:\xampp\phpMyAdmin)>(短縮ダイヤル) default-character-set=sjis init-connect=SET NAMES sjis <config.inc.php(C:\xampp\phpMyAdmin)> $cfg['DefaultLang'] = 'ja-sjis'; $cfg['Lang'] = 'ja-sjis'; $cfg['DefaultCharset'] = 'ja-sjis'; 結果: とりあえず調べた事をファイルに反映させてみましたが、 DOSプロンプトからselect文を実行すると全角文字が読めません。 どうすれば読めるようになりますか? character_set_system utf8を変更するのでしょうか? "http://www.oji.ath.cx/sb/log/eid11.html"を参考にさせて頂きましたが、character_sets_*の意味がいまいち分かりません。 こちらも分かれば教えて頂きたいと思います。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>character_set_systemだけがutf8 テーブルやカラム名などを制御するところで、ここはUTF8固定 だったと思います。 MySQL自体が最近は内部UTF8だったはずなので。 (間違えていたら詳しい方アドバイスお願いします。) 文字化けは「参考URL」にもありますが、MySQL5.x系とコマンド プロンプトの文字受け渡しがうまく整合取れていないらしく (5.0.51と5.0.45でのみ試していますが)完全には全角表示ができ ないと思います。 ちなみに5.0.51で試した場合、まったく同じような状況で、 5.0.45にダウングレードした場合、ある条件下以外では全角表示 できるようになりました。
その他の回答 (1)
- seta_takahiro
- ベストアンサー率60% (23/38)
多分駄目だろうな、というような気がしますが、 DOSから set names sjis; または、 set names cp932; を打ち込んで、同じことをした場合はどうなりますでしょうか?
お礼
ご回答ありがとうございます。 以下を実行し、select文を実行しましたが文字化けは解消しませんでした。 mysql> set names cp932; or (set names sjis); mysql> status; -------------- mysql Ver 14.12 Distrib 5.0.51, for Win32 (ia32) (略) Server characterset: sjis Db characterset: sjis Client characterset: cp932 Conn. characterset: cp932 残念ですが、それぞれ個別でインストールし直そうかと思います。 参考になりました、ありがとうございます。
お礼
ご回答ありがとうございます SQL,PHPを勉強するつもりでしたが、満足に動く環境を整えるほうが骨が折れそうです。 目的は最新XAMPPを使う事ではないので、残念ですがそれぞれパッケージをインストールし直そうと思います。 今まで文字コードを殆ど考えた事はありませんでしたが、utfなどを意識する良いきっかけになりました。 改めてインストールが完了してから、色々な文字コードで動作させてみようと思います。 この度はありがとうございました。