- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:xamppのMySQLの文字化け)
xamppのMySQLの文字化け
このQ&Aのポイント
- xamppをインストールし、開発を行っている際に、formでsubmitし、DBに登録すると文字化けが起こる問題についてです。
- MySQLの設定ファイルとして、C:/xampp/mysql/bin/my.iniを編集し、[mysqld]セクションにcharacter_set_server=utf8を追加しましたが、MySQLが起動しなくなりました。
- また、php.iniにはmbstring.detect_orderがautoになっており、mbstring.http_inputとmbstring.http_outputがUTF-8で設定されています。日本語が正しく登録されていれば表示は正しくされるはずです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、事実確認から。 問題になっているphpのアプリから、SQLを入力できる状態で、 show variables like '%char%' で、実際に有効になっている文字コードを確認してください。 そして、latan1などになっているなら、MySQL接続後、 set names 文字コード を最初に投げてみてください。 不確かな情報ではありますが、 init-connect=SET NAMES 文字コード が、php等で権限がらみなのか「効かない」といった記事がたくさんあるようです。事実確認、要因などは不明ですが、まずは実際、質問者さんの環境がどういう状況になっているのか、これにより回避可能かを試す価値はあるでしょう。 >default-character-set = utf8 を追加するとMySQLが起動しなくなります MySQL 5.1くらいから告知されていましたが、MySQL 5.5で、mysqldでのパラメタのキーワードが変更され default-character-set は、廃止 ↓ character_set_server が追加 されました。 一方、クライアントなどは従来通り default-character-set であり、紛らわしい状況になっています。
お礼
phpMyAdminでいろいろ確認したところ、DB全体の照合順序がlatin1_swedish_ciになっておりました。 個々のテーブルはutf8_unicode_ciになっていたのですが・・・ ありがとうございます。
補足
chukenkenkouさん、ご回答ありがとうございます。 > show variables like '%char%' を実行した結果、以下のようになりました。 character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8 character_sets_dir C:\xampp\mysql\share\charsets\ PHPのプログラムも全てutf-8で統一しております。