プロが教えるわが家の防犯対策術!

お世話になっております。
早速本題に入りますが、PHPにてDB(MySQL)からのデータを検索した際、
検索一覧を表示させているのですが、

echo (htmlspecialchars(mb_strimwidth($row["naiyou"], 0, 95, "....")));

の場所だけ、文字化けしてしまいます。

当方の開発環境上では問題ないのですが、レンタルサーバー上にアップさせると、結果が文字化けになってしまいます。
* 文字化けした際、ブラウザの更新を行うと、直ったり出たりしている状況です。

googlなどで調べてはいるものの…キーワードが悪いのか、知りたい情報を得る事が出来ずにおります。お忙しい中恐縮ですが、アドバイスのほど頂戴できれば幸いです。

A 回答 (3件)

header()は下記のような使い方です。


header("Content-Type: text/html;charset=EUC-JP");

mb_strimwidthで化けているならdetect_orderあたりの設定を見た方がいいんでしょうか。
処理する情報量が少ないとmb関数も失敗します。

抽象的ですが、文字化けの時に私が確認することは、

・PHPで化ける
マルチバイト関連の設定
mbstring.language
mbstring.internal_encoding
mbstring.http_input
mbstring.http_output
mbstring.encoding_translation
mbstring.detect_order
output_handler

・MySQLからの取得で化ける
4.3以降ぐらい?なら接続時にエンコーディングを指定する。
set character set utf8

・ブラウザで化ける
ブラウザの文字コード指定で直るものならheader()や<meta>で指定。
header()を出力する前に何も出力しない。

以上、参考までに。
    • good
    • 0
この回答へのお礼

tany180sxさま

おはよう御座います。事細かなアドバイスを有難う御座います!
今回、header()の設置により、文字化けは解消されたようです。

特に文字コードに関する設定?など、PHPを触り始めて書籍に紹介されていた初めの設定のみで行ってきたので、今回の文字化けには、正直、どこから手を付けて良いのか・・・といった感じでしたので、今回のようにいくつかの「調べるべきところ」の提示に、非常にありがたく思っております。有難う御座いました!

お礼日時:2006/11/05 10:52

レンタルサーバの利用条件を調べてみることオススメします。



PHPの場合、その会社によって利用環境が異なるようです。
コードは、EUCのみ、拡張子は、.cgiとすること、ヘッダーには、、、を含むこと、など。

レンタルサーバは色々と制約があり、それに合わせて使わないといけない場合が多いです。
    • good
    • 0
この回答へのお礼

taaaaaaaさま

はじめまして、こんばんは。
貴重なアドバイスを有難う御座います。
レンタルサーバーによって違うというのは聞いてはいましたが、そもそも私がPHPを始めた際、書籍の手順に沿って設定を行っただけ(localににて開発を前提の内容)…と、お恥ずかしい限りでは御座いますが、このようなところから、その違った際の対処に困っているところです。何をどうしたら良いのかが判らない・・。

localおよびサーバー上で、phpinfo()を見比べているのですが…。

お礼日時:2006/11/02 23:16

> ブラウザの更新を行うと、直ったり出たりしている状況です。


ということならheader()や<meta>で文字コードを指定したら直りそうな気も。
    • good
    • 0
この回答へのお礼

tany180sxさま

こんばんは。お世話になっております。
ご報告も兼ねてと思い、ご挨拶が遅くなってしまった事をお許し下さい。

><meta>で文字コードを指定
こちらに関しては既に指定しておりますが、header()は只今調べているところです。なかなか上手く行かないのですが・・。

で、状況を確認しながら作業をしているのですが、通常、ブラウザの「表示」にあるエンコードは「自動表示」になっているのですが、文字化けのときは、エンコードが自動選択になって居ない事に気が付きました。

header()に関しては調べてはいるものの、なかなか上手くいかず、引き続きアドバイスなどいただけたら幸いに思います。
お忙しい中恐縮ですが宜しくお願い申し上げます。

お礼日時:2006/11/02 23:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!