【PHP / Atomフィード】simplexml_load_file()でAtomフィードを読み込むとUTF8なのに文字化けする
Atom フィードをsimplexml_load_fileで読み込んでいたものが、文字化けするようになったので、解決方法をメモしておきます。
前提
前提として、以下全てがUTF-8である必要があります。
どれか一つでも文字コードが違う場合は、まず先にそれをUTF-8に変更&指定しましょう。(domなし)
・Atomフィードのファイル
・Atomフィードソース
・取得側(simplexml_load_file()を利用する方)のファイル
・取得側ソース
解決方法
一度「file_get_contens()」でソースを取得してから、別の関数「simplexml_load_string()」へ受け渡します。
$file = file_get_contents($feed);
$obj = simplexml_load_string($file);
$entry = $obj->entry;
フィードも読み込むファイルもすべてUTF-8だった
大体、文字化けは双方の文字コードの違いだったりします。
しかし今回は、フィードも読み込み側もUTF-8、ファイルの文字コードも問題ない。
結局原因が分かりませんでしたが、simplexml_load_file()で起きている模様。
久しぶりに文字コードに振り回されました。
いつの間にかブラウザの文字コードを変更する箇所もなくなって、なんだか懐かしいです(もう嫌ですけれども)。
Firefoxではツールのサイト情報から文字コードが確認できたので助かりました。