• 締切済み

MySQLの文字コードについて

こんばんは。今、PHP+MySQLの勉強をしているのですが、PHPとMySQLをSJISで保存して接続をすると文字化けはしないのですが、他の文字コードだと一部文字化けをしてしまいます。 どうやったら、他の文字コードでも化けないようにすればよろしいのでしょうか?ちなみにPHPは5.2/Apache2.0/MySQLは5.0を使っておりmy.iniの文字コード設定はデフォルトでSJISにしています。 よろしくお願いします。

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

SET NAMES でうまくいきませんでしたか。 自分ではmysql5.0がうまく動作させられてないので、推測ですけど、 phpのmysql_xxx 関数は4.0までの機能にしか対応していないようなので、mysqli_xxx の拡張版を使った方がよいかもしれません。 その上で以下の関数を実行してみる方法も、前回記載したサイトにありました。 mysqli_options ( mysqli link, MYSQLI_READ_DEFAULT_FILE, 'mysql5用のmy.cnfのパス' )

すると、全ての回答が全文表示されます。
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

>PHPは5.2/Apache2.0/MySQLは5.0 それで、OSは? SJISを利用するというところから、windowsかと推測しますけど、 windows用PHPにdefaultで入っている、libmysql.dll は、文字コード設定が、laten1 なので、 「サーバーに接続した後にすぐ、"SET NAMES キャラクターセット名" という SQL 文を実行する」という対策が必要です。「」内は以下の参考ページから引用。 MySQL5.0では、多バイト文字の扱いで結構不都合があるようなので以下のページを参考にして下さい。 http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_40

参考URL:
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_40
gonzou123
質問者

補足

ご回答ありがとうございます。 OSはXPになります。接続をした後にmysql_query(set names ujis);でデータベースの文字コード変換をしていますが、やはりテーブル内のデータは一部文字化けを起こしてしまいます。

すると、全ての回答が全文表示されます。

関連するQ&A