KennyQi PHP Blog

Linux、PHP、Perl、Ajax、MySQLでのWeb開発やWordPressの設定メモと息抜きブログ

  • 3月192010

    PHP mb_convert_encodingで文字化け 必ずファイルの一番最初が?になる

    Published on 2010/03/19 18:03 780
    カテゴリ: PHP, Webデザイン, 携帯; タグ:

    PHPでMVCモデルのシステムを運用していて急に出てきたエラーの話です。
    MVCのView、デザイン部分はテンプレートファイルとして
    運営者側がファイルを変更することが多いのですが、
    その保存時にちょっとした罠?がありましたのでメモ。


    今回文字化けが起こったシステムでは、
    テンプレートファイルはUTF-8、
    PHP側でmb_convert_encodingを使って
    UTF-8をShiftJISに変換して表示させています。
    今回はこのテンプレートファイル保存時にUTF-8で保存して
    サーバにアップして表示してみると、
    なぜかファイルの一番初めに?と表示されました。
    で、原因を探ってみると、
    ファイルの一番最初にBOM(Byte Order Mark)というのがついていて
    これをPHPのmb_convert_encodingが変換できず、?と表示されていた
    ということでした。
    このBOM、調べてみると、
    UTF-8だとBOMあり
    UTF-8NだとBOMなし
    になるそうで。
    今回はTerapadでファイル保存するときに「UTF-8」を選んだことが原因でした。
    そういえば、UTF-8とUTF-8Nって何が違うのか、
    気になったことがありましたけど、放置していました。
    こんなところでエラーの原因になってしまうとは思いもよりませんでした。
    知識不足を痛感です。
    参考:
    UTF-8 と UTF-8N の違いは何か?

    このページはどうでしたか?
    よくないよい (No Ratings Yet)
    No Comments
  • 初めて当ブログに訪れた方や何度か当ブログにお越し頂いている皆様。
    もしブログの内容を気に入って頂けましたらRSSリーダーの登録よろしくお願いします。

コメント


ブログランキング

にほんブログ村 IT技術ブログへ 人気ブログランキングへ

最新記事

カテゴリー

人気記事