MW211 EXIT

devlog
PHP/BOMコードとPHPソース
2013年08月11日
PHPソースファイルをうっかりメモ帳で開いて保存してしまうと大変なことが起きる。
#UTF-8で作成している場合の話ね

メモ帳はBOM付きで保存してしまうのだ。

では、BOM付きPHPソースファイルの影響はというと…。

┌──────────────────────────────────────┐
│あ<?php                                                                     │
└──────────────────────────────────────┘
単純な話、上記のようにうっかりPHPソースの外に
変な文字を混入させてしまった場合と同じだと考えていい。
┌──────────────────────────────────────┐
│(BOM)<?php                                                                  │
└──────────────────────────────────────┘

【画面表示の場合】
作成されるHTMLソースの先頭にBOMコードが付加されるので、
UTF-8(BOM無し)ソースではなく、UTF-8(BOM付き)ソースとなる。
但し、これは何の問題もない。
しかしながら、インクルードするファイルが二つ以上BOMに侵されていると
BOMが二重に付加された方にになり、二つ目のBOMが半角スペースのようになり
悪さをしてしまう。

【ダウンロード機能の場合】
画面表示ではなくダウンロードに使う場合、出力されるデータの先頭に
BOMが付加されてしまう。
UTF-8のデータとしてダウンロードするなら影響はないが、
シフトJISのCSVファイルとかに変換してダウンロードする場合は、
シフトJISの中(正確には先頭)にBOMが混在するので文字化けを誘発する。
もちろん、UTF-8のデータだとしても、前述のように二重にBOMがあれば
二つ目が悪さをしてしまう。
分類:PHP