最終的に
SET NAMES utf8
で解決しましたが、これを使わずに解決したいと思っています。
php5 mysql5
コードはutf8
my.cnf
[mysqld]
default-character-set = utf8
[mysql]
default-character-set = utf8
php.ini 下記コメントアウト
mbstring.http_input
mbstring.http_output
mbstring.internal_encoding
mbstring.language
show variables like 'char%';
character_setは
_client
_connection
_database
_results
_server
_system
全てutf8
_filesystem binary
DBへのクエリは、pear_DB。
送信前に mb_detect_encoding で送信sqlを確認で UTF-8 と表示。
(mb convert encodingで auto から utf-8 へ変換済み)
自分なりに注意していたのですが、
どこでミスをしているのか検討がつかない状態です。
ミスしてそうなところがあれば、アドバイス頂けると助かります。
お呼びがかかったので一応こちらへ。
php.ini への記述は、最初に mbstring.language を記述する必要があるらしいのでご注意ください。
また、mbstring.http_input, mbstring.http_output に pass 以外を設定していたり、mbstring.encoding_translation が有効になっていると、エンコードがらみの問題に気が付くのが遅れる可能性が高いと思います。
ご利用のサーバは、CentOS でしたっけ。
php.ini がすべてコメントアウトとは、デフォルトでは日本語を使わない設定なんですね。
MySQL もデフォは日本語非対応なのを無理矢理合わせたって感じがなんとなく漂っていますが...
MySQL は全然使った事がないので、コメントでお茶を濁してました。
個人的には PostgreSQL 派なんですが、最近は SQLite が気になっています。
(結局そんなにものすごいアクセスがある訳じゃないし、デフォで UTF-8 らしいし、データの可搬性も高そうだし...)
どうもありがとうございます。
借りている専用サーバーの初期設定だったので、気づきませんでした・・・。
やっぱりphp.iniの記述はチェックしておくべきですね。
どうもありがとうございました!