こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

MySQLの文字コードについて

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

よろしくお願いします。

投稿日時 - 2008-02-24 22:45:05

QNo.3806846

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2008-03-06 20:38:24

ANo.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

投稿日時 - 2008-02-25 21:19:29

補足

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

投稿日時 - 2008-02-26 01:52:28

あなたにオススメの質問