- ベストアンサー
xampp mysql5.0.51の文字化けについて
- mysqlの日本語文字が文字化けし、いろいろ試みてみましたが解決せず、途方に暮れております。まだ勉強しはじめの超初心者でしてあれこれネットなどで調べて2週間になりますが解決せず困っています。どなたか解決方法をご存知でしたらぜひご教授ください。
- mysqlのテーブル内の日本語が文字化けし、いろんなサイトを参考にしながら見よう見まねで設定してみましたが、文字化けが解消しないどころか、このように変えてから今度はxamppコントロールパネルのmysqlが起動しなくなってしまいました。mysqlを使用している知人に相談してもmysql5.0~の最新バージョンは不安定なので使わないほうがいいとのことですが、本当なのでしょうか?もし解決方法がないのであれば安定バージョンでインストールし直したいと思っているのですが、どのバージョンだと比較的安定しているのでしょうか?
- mysqlの文字化け問題で困っています。試した設定では解決せず、逆にmysqlの起動ができなくなってしまいました。知人に相談しても最新バージョンは不安定と言われ、安定バージョンで再インストールしたいと考えています。どのバージョンが安定しているでしょうか?解決方法をご存知の方、お教えいただけますと幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ANo2です。 Windows のコマンドラインは特に明示的に変更されていないので あれば、「CP932」です。 「SHOW VARIABLES LIKE 'char%';」で確認されたときに「UTF8」 で統一されているのであれば、MySQL 側の文字コードの設定は問 題ないと思います。 ひとつ確認として、コマンドラインから、MySQL にログイン後、 明示的に「SET NAMES CP932;」を実行し、データベースとテーブ ルをテスト用に作成し、コマンドラインから簡単なデータを投入 してみることをお勧めします。 この状態で 1)PhpMyAdmin(XAMPP付属)からMySQLにログインし、作成データを確認する。 ※「config.inc.php」の設定が必要かも 2)PHP にて簡単な表示ページを作成し、情報を引き出してみる。 ※PHPの文字コード設定に注意 3)コマンドラインが 「??」や「半角カナ、記号」などに文字化け ※コマンドラインとMySQL5.0.51 間の仕様が考えられます。 正直この状態でダメでしたら、素直にダウングレードした方がすっ きりいくと思います(汗 XAMPPでいくと、MySQL5.0.45がたしか「Ver1.6.4」迄、MySQL4系が 「Ver1.4.16」だと思います。(要確認) 文字コードを「UTF-8」で扱う場合「5.x」系や「4.1系」ですと、 文字コード周りのトラブルにあっている方が結構いらっしゃるみた いです。(確か4.0xは標準でUTF8未対応でしたよね?) また、特にWindowsの場合、頑なまでに「CP932」なのでこれも混乱 する一因かもしれません。 文字コードは私もMYSQL含め勉強途中なので、詳しい方にお聞きす るのが一番だと思いますが、imu_umiさんが構築される環境や運用 環境、用途に応じて設定されるのがよろしいかと思います。 ( 例えば、Windows環境で完結&ダメ文字問題がOKなら、CP932等 ) Mysqlのバージョンについては、勉強目的であれば5.0x系でもかま わないと思います。(個人的な意見ですが)
その他の回答 (4)
- S-Kakashi
- ベストアンサー率100% (8/8)
たびたび失礼します。 PhpMyAdminやPHP上で格納したデータが正常表示されるようでしたら、 コマンドラインの仕様だと思います。。。 コマンドラインでUTF8のデータが空白ということは、Windowsのコマン ドラインの文字セット(MySQLではないです)をUTF8に変更していません か?(chcp 65001とやると、UTF8データは空白になってしまいます。) あとは、コマンドラインでMYSQLログイン後に明示的に「set names sp932;」を命令しても同じでしょうか。 あと考えられることは、「格納データはファイルからのアップロード であれば、ファイルの文字コードがあっているか。」、 「SHOW VARIABLES LIKE 'char%';」コマンド、「STATUS」コマンドで 文字コードは統一されているか再度確認することをお勧めします。
補足
度々ご丁寧にありがとうございます。 PHPでも試しに表示してみましたが、 データベースの部分はやはり表示されませんでした。 windowsのコマンドラインの文字セットというのは よく存じ上げていませんでした。 特に変更した覚えはないのですが、 どのようにして確認すればよろしいでしょうか? また、set names cp932;は投入しましたが、 文字化けは解消されませんでした。 ちなみに、SHOW VARIABLES LIKE 'char%';コマンドで確認したところ、 文字コードはutf8ですべて統一されていました。 普通はこんなに手こずることなく日本が表示されるんでしょうか? ほんとにお手上げです(涙)。
- S-Kakashi
- ベストアンサー率100% (8/8)
No.2です。 「文字化けの対処が見つからない~」というのは、コマンドプロンプト でのみ文字化けがする場合(phpMyAdminやPHP等での確認時は正確にデー タが格納されている)です。 紛らわしくてすみません。 記憶があいまいなのですが、「character-set-server = latin1」、 「collation-server = latin1_general_ci」はMySQL5.0.51の「My.cnf」 にはなかったような覚えがあります。 そのあたりから、少なくともXAMPP付属のMYSQL内「My.cnf」の記述内容 が変わっていたと思います。 後、ご利用のデータベースがUTF8化された後に作成されたものかを確認 して下さい。(データベースがlatin1でしたので) また[mysqld]の部分を default-character-set=utf8 skip-character-set-client-handshake の記述のみにしてもダメでしょうか。 安定バージョンと文字コードについては、私もまだ初心者レベルの為 割愛します。
補足
再びご回答ありがとうございます。 おっしゃるとおりデータベースはUTF8化される前に使用したものを そのまま使っておりました。 そこでさっそく新たにUTF8化した後にデータベースを作成してみましたが、 今度はテーブル内で文字化けしていた箇所が 何も表示されず空白になってしまいました。 [mysqld]の部分を default-character-set=utf8 skip-character-set-client-handshake のみにしてみましたがやはり空白のままです。 やはり仕様に問題があるのでしょうかね~。
- S-Kakashi
- ベストアンサー率100% (8/8)
文字化けは、phpMyAdmin上でしょうか? コマンドラインでしょうか? 全てであれば、まず疑うのはNo1さんのおっしゃられている 内容を確認するのがベターだと思います。 あとは、はじめから作成されている「test」等のデータベー スを利用していませんよね? コマンドラインであれば、私も5.0.51で経験があるのですが、 文字化けの対処は見つかりませんでした。 5.0.45にダウングレードしたら、ある条件下において表示欠 損が出るものの、同条件で表示できたため、5.0.51の仕様と いうことが考えられると思います。
補足
さっそくご回答ありがとうございます。 コマンドラインというのはコマンドプロンプトのことでよろしいでしょうか? 文字化けはコマンドプロンプト上で起っています。 データベースは「PHP5.0+MySQL5.0で構築する最速Webシステム」 という書籍についていたサンプルデータベースを使用しました。 やはり5.0.51の仕様ということも考えられるんですね。 もう少し設定を見直してみてダメならば5.0.45にダウンロード してみようと思います。 ありがとうございます。
- chukenkenkou
- ベストアンサー率43% (833/1926)
xamppに同梱されたMySQLですよね? そうであればmy.cnfに、以下の指定がデフォルトで入っていたと思います。 character-set-server = latin1 collation-server = latin1_general_ci これを、コメントにするか削除しましたか? MySQLのSQLが入力できる状態で、 SHOW VARIABLES LIKE 'char%'; というコマンドを入力してみてください。 character_set_database | latin1 character_set_server | latin1 といった値になっていませんか? もしそうならば、my.cnfの上述の変更を行い、MySQLのサービスを停止&再開始してみてください。
補足
さっそくご回答ありがとうございます。 一度アンインストールをして再インストールし、 my.cnfでcharacter-set…という記述を探しましたが、 デフォルトではそのような記述は入っておりませんでした。 ですが、chukenkenkouさんのおっしゃるとおり、 コマンドプロンプトでSHOW VARIABLES LIKE 'char%';を 投入すると、 character_set_database | latin1 character_set_server | latin1 といった値になっていました。 度々恐れ入りますが、この後どのような設定を行えば 文字コードが変わるのでしょうか? また、utf8とsjisではどちらに直すのが正しいのでしょうか?
お礼
S-Kakashiさんありがとうございます。 1)、2)、3)試しましたが、残念ながらやはり文字化けは解消されませんでした。 S-Kakashiさんのおっしゃるとおり、 一度ダウングレードすることにします(^_^;)。 私はMySQLについてまだまだ勉強不足で 文字コードの事もお恥ずかしいほど存じておりませんでした。 S-Kakashiさんにはいろいろとご教授いただいて たいへん勉強になりました。 別件で質問する機会がありましたら、 その時はまたどうぞよろしくお願いします。