人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

mysqlとphpの文字化けで悩んでいます。

最終的に

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 へ変換済み)


自分なりに注意していたのですが、
どこでミスをしているのか検討がつかない状態です。
ミスしてそうなところがあれば、アドバイス頂けると助かります。

●質問者: onigirin
●カテゴリ:ウェブ制作
✍キーワード:Char dB MB MySQL PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tezcello
●60ポイント

お呼びがかかったので一応こちらへ。


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の記述はチェックしておくべきですね。

どうもありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ