みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

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の項目にてお伺いいたしました。
となっておりました。他に何か原因やチェックしなければいけないところ
等ございましたらご教授ください。 よろしくお願いいたします。

投稿日時 - 2005-10-05 16:12:31

QNo.1693912

困ってます

質問者が選んだベストアンサー

[mbstring]
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.detect_order = auto
mbstring.substitute_character = none

こうしてみてもダメでしょうか。
全部SJISにした方がよろしいかと思われます。

スクリプトファイルの文字コードも関係しますので、
確認してみて下さい^^

投稿日時 - 2005-10-06 07:16:02

お礼

ご回答ありがとうございます。
php.iniを修正してみましたがやはりうまく表示させる
事ができませんでした。
php.iniの他にhttpd.confに以下の一文を
追加してみたところうまく動作するようになりました。
AddCharset SJIS .sjis
ご回答くださいまして本当にありがとうございました。

投稿日時 - 2005-10-08 10:39:53

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

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

回答(2)

ANo.1

;mbstring.internal_encoding = EUC-JP

先頭に ";" が付いていますが、これが付いているとその行はコメント扱いになりますので、全く書いていないのと同じになってしまっている状態です。

ですので、外した上で試してみてください。

投稿日時 - 2005-10-05 16:26:46

お礼

ご回答ありがとうございます。
ご指摘いただいておりました、php.iniの";"をはずしてapacheを再起動したのですがやはりクエリの結果が???と
表記されてしまいます。
やはりshift-jisで表示させるのがいけないのでしょうか。

投稿日時 - 2005-10-05 17:10:10

あなたにオススメの質問