【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ではツールのサイト情報から文字コードが確認できたので助かりました。

この記事はあなたの役に立ちましたか?