この記事のきっかけは、UTF-8システムにてSJIS形式のCSVダウンロード処理時に
おかしな文字化けが起こる事がきっかけでよくよく調べてみると、
ダウンロードされたファイルにBOMがくっついていました。
で、一つ一つBOMファイルを探すのは手間がかかってしまうので
BOMファイルを一発で検索するプログラムを紹介します。
s('検索されるディレクトリ(ドキュメントルートかな)/'); function s($target_dir) { chdir($target_dir); $files = glob('*'); if (!is_array($files)||count($files)==0) return; foreach ($files as $file) { $path = $target_dir.$file; if (is_dir($path)) { s($path.'/'); }else { $contents = file_get_contents($path); if (hasbom($contents)) { echo "<p>$path</p>"; } } } } function hasbom($contents) { return preg_match("/^efbbbf/", bin2hex($contents[0] . $contents[1] . $contents[2])) === 1; }
適当な名前(bomcheck.php)で保存して、
php bomcheck.php
これで一発検索。
この記事に大変感謝します。
該当のBOMファイルからBOMを除去して実行したら文字化けは治りました。
めでたしめでたし(笑)
ちなみにBOMファイルの確認方法は、サクラエディタで該当ファイルを選び
「名前を付けて保存」時に、BOMにチェックがついていればBOM付のファイルになります。