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~の最新バージョンは不安定なので使わないほうがいいとのことですが、本当なのでしょうか?
もし解決方法がないのであれば安定バージョンでインストール
し直したいと思っているのですが、
どのバージョンだと比較的安定しているのでしょうか?
併せてご回答いただけるとたいへん助かります。
本当に初心者の質問で恐縮ですが、よろしくお願いします。
No.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系でもかま
わないと思います。(個人的な意見ですが)
S-Kakashiさんありがとうございます。
1)、2)、3)試しましたが、残念ながらやはり文字化けは解消されませんでした。
S-Kakashiさんのおっしゃるとおり、
一度ダウングレードすることにします(^_^;)。
私はMySQLについてまだまだ勉強不足で
文字コードの事もお恥ずかしいほど存じておりませんでした。
S-Kakashiさんにはいろいろとご教授いただいて
たいへん勉強になりました。
別件で質問する機会がありましたら、
その時はまたどうぞよろしくお願いします。
No.4
- 回答日時:
たびたび失礼します。
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ですべて統一されていました。
普通はこんなに手こずることなく日本が表示されるんでしょうか?
ほんとにお手上げです(涙)。
No.3
- 回答日時:
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
のみにしてみましたがやはり空白のままです。
やはり仕様に問題があるのでしょうかね~。
No.2
- 回答日時:
文字化けは、phpMyAdmin上でしょうか?
コマンドラインでしょうか?
全てであれば、まず疑うのはNo1さんのおっしゃられている
内容を確認するのがベターだと思います。
あとは、はじめから作成されている「test」等のデータベー
スを利用していませんよね?
コマンドラインであれば、私も5.0.51で経験があるのですが、
文字化けの対処は見つかりませんでした。
5.0.45にダウングレードしたら、ある条件下において表示欠
損が出るものの、同条件で表示できたため、5.0.51の仕様と
いうことが考えられると思います。
この回答への補足
さっそくご回答ありがとうございます。
コマンドラインというのはコマンドプロンプトのことでよろしいでしょうか?
文字化けはコマンドプロンプト上で起っています。
データベースは「PHP5.0+MySQL5.0で構築する最速Webシステム」
という書籍についていたサンプルデータベースを使用しました。
やはり5.0.51の仕様ということも考えられるんですね。
もう少し設定を見直してみてダメならば5.0.45にダウンロード
してみようと思います。
ありがとうございます。
No.1
- 回答日時:
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ではどちらに直すのが正しいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php・Mysql Like文で日本語が使...
-
xampp の mysql 文字化け
-
接続ができません
-
副問合せにLIKE文を使う方法は...
-
like句を使って日本語を検索す...
-
mysqlへのインポート処理がうま...
-
postgreSQLのデータ型
-
MySQLカラム名は日本語と英数字...
-
Float型の時の計算結果がおかしい
-
シングルクォーテーションとダ...
-
[SQLserver]長文に適したデータ...
-
phpで複数のDBを使用した場合の...
-
mysqlでの日本語文字化けについて
-
列数が多いと結果が行単位に改...
-
ポート3306へつながらず、MySQL...
-
クラスファイルでエラーが出て...
-
Interbase smp 2009 日本語版に...
-
MySQLの日本語LIKE検索について
-
phpmyadminから別ホストへの接...
-
VBAで変数内に保持された二次配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MYSQLで日本語が入力できない
-
cseデータ閲覧時の文字化け
-
php・Mysql Like文で日本語が使...
-
MySQL(UTF-8)で ~ が文字化け...
-
mysqldumpでリストアし一部外字...
-
MySQL5.1の文字列サイズは文字...
-
MYSQLでタイ語
-
CSVをMYSQLにインポートすると...
-
UTF-8にしても文字化けが直らない
-
さくらのレンタルサーバで文字...
-
MYSQL再起動後に接続できなくな...
-
DB内の日本語データがPHPで取得...
-
phpMyAdminでutf8_binを使う
-
データベース(mysql)の日本語...
-
MySQLのチューニングについて
-
mysql>status で
-
MAMP MySQl でコマンドプロンプ...
-
コマンドプロンプトの実行結果...
-
php $dsn
-
文字化けが発生する
おすすめ情報