- ベストアンサー
MYSQLから抽出したクエリの結果が文字化けします。
PHPの文字化けの件でお伺いしたいのですが サーバーOS:FreeBSD PHP4.3.11とMYSQL4. 1. 11を利用してWEBアプリを作成しよう としております。 文字化け対策として、my.confに以下の文を追加しました。 [client] default-character-set= sjis [mysqld] default-character-set= sjis character-set-server = sjis [mysqldump] default-character-set= sjis [mysql] default-character-set= sjis mysql再起動後、telnetにて、データベースの内容を 確認したところShiftJISの文字コードでで無事に確認できました。 そこでPHPからこのデータを抽出しようと考え select * from table where column=12345 のような形で日本語のデータをPHPで表示させようとしましたが 日本語のデータのところが????と表示されてしまいうまく表示させることが 出来ません。ここでhttpd.conf に AddCharset SJIS .sjis と追加してしても症状が改善されません。 php.iniを編集すればうまくいくのかと考え、php.iniを確認したところ [mbstring] ;mbstring.internal_encoding = EUC-JP ;mbstring.http_input = auto ;mbstring.http_output = SJIS ;mbstring.detect_order = auto ;mbstring.substitute_character = none; PHPとMYSQLと双方に原因が考えられますが、telnet上ではきれいに 表示されることを考えPHPの項目にてお伺いいたしました。 となっておりました。他に何か原因やチェックしなければいけないところ 等ございましたらご教授ください。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
[mbstring] mbstring.internal_encoding = SJIS mbstring.http_input = auto mbstring.http_output = SJIS mbstring.detect_order = auto mbstring.substitute_character = none こうしてみてもダメでしょうか。 全部SJISにした方がよろしいかと思われます。 スクリプトファイルの文字コードも関係しますので、 確認してみて下さい^^
その他の回答 (1)
- THX1138
- ベストアンサー率51% (108/208)
;mbstring.internal_encoding = EUC-JP 先頭に ";" が付いていますが、これが付いているとその行はコメント扱いになりますので、全く書いていないのと同じになってしまっている状態です。 ですので、外した上で試してみてください。
お礼
ご回答ありがとうございます。 ご指摘いただいておりました、php.iniの";"をはずしてapacheを再起動したのですがやはりクエリの結果が???と 表記されてしまいます。 やはりshift-jisで表示させるのがいけないのでしょうか。
お礼
ご回答ありがとうございます。 php.iniを修正してみましたがやはりうまく表示させる 事ができませんでした。 php.iniの他にhttpd.confに以下の一文を 追加してみたところうまく動作するようになりました。 AddCharset SJIS .sjis ご回答くださいまして本当にありがとうございました。