MySQLとPHPで日本語が文字化けする。
MySQLとPHPでアプリを開発中です。
MySQLに登録済の日本語文字列データをPHPでselectして
echoを使ってクライアント(Windows XP)のブラウザに表示させると、
文字化けします。
全角文字がすべて半角の '?' になります。
MySQLの状態を調べるために以下を実行しました。
SHOW VARIABLES LIKE 'char%';
結果は以下のとおりでした。
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/local/mysql5.0.51a/share/mysql/charsets/
PHPの内部エンコードはUTF-8です。
php.iniの関連設定は以下のとおりです。
default_charset = "UTF-8"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = "none"
mbstring.encoding_translation = On
extension_dir = "/usr/local/lib/php/extensions"
extension=php_mysqli.dll
extension = gd.so
extension = mysqli.so
extension = xmlrpc.so
MySQLもPHPもすべてUTF-8で統一したので問題ないはずだと
思ったのですが?
半角アルファベットは問題なく表示されます。
サーバー側OSはSolarisです。
MySQLから正しくデータを得られていないように思えるのですが。
ヒントでも結構ですから教えていただけるとありがたいです。
よろしくお願いします。
お礼
自己レスですが、CSSにてFontを一括で設定しているのですが、 ここで指定しているフォントが原因だったようです。 テストページを作成し、 に対してそのフォントを指定した場合 と指定しなかった場合のDIVタグを作ってみました。 家で確認した結果、そのフォントを指定したDIV内だけ、 ・・・が表示されました。 とりあえず、 部分だけを別フォント指定することで 逃げることにしました。