プロが教えるわが家の防犯対策術!

mysqlの日本語文字が文字化けし、いろいろ試みてみましたが解決せず
途方に暮れております。
まだ勉強しはじめの超初心者でしてあれこれネットなどで調べて
2週間になりますが解決せず困っています。
どなたか解決方法をご存知でしたらぜひご教授ください。
環境は以下のとおりとなっております。

・ローカルpc→windowsXP
・xampp1.6.6をインストールし、mysql5.0.51を使用中

mysqlのテーブル内の日本語が文字化けし、
いろんなサイトを参考にしながら見よう見まねで
以下のように設定してみました。

1)コマンドプロンプトで
 set character set cp932; と入力

2)my.cnfというファイルに以下内容を追加
[client]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8

3) 1)、2)でも解決されなかったため 2)の内容でutf8のところをsjisに変えて再度保存

というような設定を行いました。
このように設定しても文字化けが解消しないどころか、
このように変えてから今度はxamppコントロールパネルのmysqlが
起動しなくなってしまいました。
正確には開始ボタンを押すとmysql起動とは表示されるのですが
開始ボタンが開始のままになってしまいます。

mysqlを使用している知人にこの問題について聞いてみたところ
mysql5.0~の最新バージョンは不安定なので使わないほうがいいとのことですが、本当なのでしょうか?
もし解決方法がないのであれば安定バージョンでインストール
し直したいと思っているのですが、
どのバージョンだと比較的安定しているのでしょうか?
併せてご回答いただけるとたいへん助かります。

本当に初心者の質問で恐縮ですが、よろしくお願いします。

A 回答 (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系でもかま
わないと思います。(個人的な意見ですが)
    • good
    • 0
この回答へのお礼

S-Kakashiさんありがとうございます。

1)、2)、3)試しましたが、残念ながらやはり文字化けは解消されませんでした。
S-Kakashiさんのおっしゃるとおり、
一度ダウングレードすることにします(^_^;)。

私はMySQLについてまだまだ勉強不足で
文字コードの事もお恥ずかしいほど存じておりませんでした。
S-Kakashiさんにはいろいろとご教授いただいて
たいへん勉強になりました。

別件で質問する機会がありましたら、
その時はまたどうぞよろしくお願いします。

お礼日時:2008/02/20 01:04

たびたび失礼します。


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ですべて統一されていました。

普通はこんなに手こずることなく日本が表示されるんでしょうか?
ほんとにお手上げです(涙)。

補足日時:2008/02/19 01:02
    • good
    • 0

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
のみにしてみましたがやはり空白のままです。

やはり仕様に問題があるのでしょうかね~。

補足日時:2008/02/18 16:06
    • good
    • 0

文字化けは、phpMyAdmin上でしょうか?


コマンドラインでしょうか?

全てであれば、まず疑うのはNo1さんのおっしゃられている
内容を確認するのがベターだと思います。
あとは、はじめから作成されている「test」等のデータベー
スを利用していませんよね?

コマンドラインであれば、私も5.0.51で経験があるのですが、
文字化けの対処は見つかりませんでした。
5.0.45にダウングレードしたら、ある条件下において表示欠
損が出るものの、同条件で表示できたため、5.0.51の仕様と
いうことが考えられると思います。

この回答への補足

さっそくご回答ありがとうございます。

コマンドラインというのはコマンドプロンプトのことでよろしいでしょうか?
文字化けはコマンドプロンプト上で起っています。
データベースは「PHP5.0+MySQL5.0で構築する最速Webシステム」
という書籍についていたサンプルデータベースを使用しました。

やはり5.0.51の仕様ということも考えられるんですね。
もう少し設定を見直してみてダメならば5.0.45にダウンロード
してみようと思います。
ありがとうございます。

補足日時:2008/02/18 12:15
    • good
    • 0

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ではどちらに直すのが正しいのでしょうか?

補足日時:2008/02/18 12:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!