UTF-8のBOMにはまる
表題のとおりBOMにはまったので久しぶりに更新。
UTF-8のファイルを扱っているときに、ある自作ライブラリのメソッドを呼び出すとよくわからない文字が出て困っていた。
そのメソッドはAPIを使ってよそから情報を取得するものだった。
で調べてみるとそのよくわからない文字はどうやらBOM(バイトオーダーマーク)らしい。
で、「BOM PHP」とかってググると色々と対策が書いてあるので早速試してみた。
1.返り値にBOMを除去する関数をかぶせてみる
以下のサイトを参考にさせていただき、ここで紹介されている関数に通してみた。
cl.pocari.org - PHP で UTF-8 に付いている BOM を削除する方法
・・・が、だめ。
2.どこでBOMが出力されているのか調べる
頭の中はメソッドの返り値が悪さしてるもんだと思い込んでいたのだが、ここでようやく悪さしているところを探す気になる。
何ということでしょう、ライブラリ自体を読み込んだタイミングでBOMが出力されているではないですか!(翻訳風)
というわけで、ライブラリの文字コードをUTF-8Nにしてから再度実行したらうまくいきましたとさ。めでたしめでたし。