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

PHPで出力したHTMLが携帯ブラウザだと2バイトコードが文字化けしてしまいます。
出力する内容をHTMLにするとまったく問題ないのですが、何か確認すべき(ありがちな)ミスはありませんか?

●質問者: P-mako
●カテゴリ:ウェブ制作
✍キーワード:HTML PHP ありがちな バイトコード ブラウザ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● ecchie
●18ポイント

http://www.limy.org/program/mobile/list1.html

?????????κ?????

<meta http-equiv=”Content-Type” content=”text/html; charset=SHIFT_JIS”>は入ってますか?

◎質問者からの返答

入れてますがNGです。

もちろんPCでは問題なく表示されます。


2 ● まきのっぴ
●18ポイント

HTML の中身は Shift_JIS なのに、HTTP レスポンスヘッダで EUC-JP であると出力されてしまっているのではないでしょうか? (逆もあり得ますが)

header(”Content-type: text/html; charset=Shift_JIS”);

という具合に、レスポンスヘッダを修正してやってはどうでしょうか。

◎質問者からの返答

ご回答ありがとうございます。

HTMLタグを出力する前にheaderするものですよね?

NG(状況変わらず)でした。


3 ● ecchie
●18ポイント

http://www.shtml.jp/mojibake/binew.html

「美乳」で文字化けが直るって本当?

「0xFDFE」をヘッダー部分に挿入すると対策になるようですが、どうでしょうか。

http://help.yahoo.co.jp/help/jp/common/view/view-08.html

Yahoo! ヘルプ - 表示と印刷に関する

◎質問者からの返答

解決はしませんでしたが、URLは2つとも別の意味で参考になりました。

ありがとうございました。


4 ● tezcello
●18ポイント

http://php.s3.to/man/ref.mbstring.html

マルチバイト文字列関数(mbstring)

たしか PHP はデフォがユニコードだったような...。

Shift-JISのつもりがPHPからはUTF-8で返していて、それをIEはコードだけを見てエンコードを「勝手に」切り替える(IEはmetaタグやレスポンスヘッダを無視する)のでPCではキチンと見えるが、携帯ではそんな事はしてくれないので文字化けとなるとか。

実際にPHPが送ってくるデータのコードを確認してみては?

明示的に内部エンコード、出力エンコードを指示する必要があるかもしれませんね。

◎質問者からの返答

試行錯誤する中で、PHPファイルに対して、nkf -s を実行したら、文字化けが解消しました。

携帯向けということで、半角カナがあったのが原因なのでしょうか?

もともと(携帯でも)文字化けしないHTMLからコピー&ペーストしたものだったのですが・・・

(viでも同じように問題なく表示されているし、ダメ元でnkfしてみたら上手く表示されたという次第です)

結果的にはショボい話でお騒がせしました。


5 ● chankaz
●18ポイント

何か別のファイルを「include」か「require」していませんか?その別ファイルがShift_JIS以外なら文字化けします。


単一ファイルということでしたら、1行目に以下の記述を加えてみるとどうなりますか。

(mbstringモジュールが有効であることが前提ですが)


mb_language(”ja”);

mb_internal_encoding(”SJIS”);

◎質問者からの返答

結果的にはnkfで解消しましたが、たしかにご指摘のようなケースもありがちかも知れないですね。

今後のためには、良い参考になりそうです。

ありがとうございます。

関連質問


●質問をもっと探す●



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