- 締切済み
MySQLのコマンドクライアントの文字化けに困っています。
WindowsXP PHP 5.1.2 Apache 2.0.55 mysql 4.1.7 全てインストールして、とりあえずWindowsXP上で動かしています。 my.iniで default-character-set=sjis とすると、下記エラーで日本語のデータがINSERT文で入力できなくなります。 ERROR 1406 (22001): Data too long for column 'unam' at row 1 default-character-set=latin1 とすると、日本語でINSERTもできて、コマンドクライアント上でも正しく表示 されるのですが、PHPでデータを呼び出すと文字化けしてしまいます。 解決方法をよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
statusコマンドの表示結果を見る限り、文字コードの 指定が有効になっていないようです。 確認したmy.iniは、windowsフォルダ直下のものでしょうか? OSやMySQLのバージョンによって異なるようですが、 バージョン4系だと以下の設定ファイルで、文字コードを正しく指定できているでしょうか? (1)c:\windows\my.ini (2)c:\my.cnf (3)c:\mysql\data\my.cnf ※(2)、(3)の拡張子「cnf」は、表示されていないかも知れない。
- chukenkenkou
- ベストアンサー率43% (833/1926)
latin1でData too longになるなら分かりますが、sjisでなってしまうのですか? コマンドラインクライアントでstatusと入力した場合、すべての文字コードはsjisになっているでしょうか? My.iniでは、下記の3箇所にsjis指定&再起動する必要がありますが、すべて指定しているでしょうか? [client] default-character-set=sjis [mysql] default-character-set=sjis [mysqld] default-character-set=sjis
補足
回答ありがとうございます。 先ほど、my.iniを確認してみましたが、 [client] default-character-set=sjis [mysql] default-character-set=sjis [mysqld] default-character-set=sjis に設定されていました。 再起動しても同じ結果Data too longです。 ただ、statusと入力すると、 Server characterset: latin1 Db characterset: latin1 Cliant characterset: sjis Conn. characterset: sjis となっています。 二箇所の設定はどうやるのでしょうか? もしわかりましたら、よろしくお願いします。
補足
MySQLなのですが、5.0を使っています。 4.1.7はPHPinfoのClient API versionです。 my.iniはc:\windowsにはコピーしていません。 C:\Program Files\MySQL\MySQL Server 5.0にあるものです。 現在の状況を少し整理すると、どうやらデータベースごとに文字 コードが違っているようです・・ 作成したときの文字コードが反映されるようですね。 ■MySQLコマンドクライアントからログイン直後にstatusコマンドを 実行すると、 Server characterset: sjis Db characterset: sjis Client characterset: sjis Conn. characterset: sjis [mysql] default-character-set=sjis ここの設定を変えると、Client と Conn.は反映されます。 しかし、 [mysqld] default-character-set=sjis ここを変えても、ServerとDbに反映されません。 ■use ~でデータベースを選択すると、 最初に質問した通りの、 Server characterset: latin1 Db characterset: latin1 Client characterset: sjis Conn. characterset: sjis という状況。 ・ServerとDbの変更はどこでやるのか? ・データベースごとに設定は可能なのか? 今はこんな感じです・・・