• 締切済み

euc-jpからutf-8の文字コード変換について

現在、何らかのhtmlを取得する際にはurf-8で統一しようと思っているのですが、 たとえば <?php $f=file_get_contents("http://blog.livedoor.jp/dqnplus/")//文字コードEUC-JP; $f = mb_convert_encoding($f,"utf-8","eucjp-win,utf-8,sjis-win,EUC-JP"); echo $f; ?> では、EUC-JPからの変換がうまくいきません。 ……というより、EUC-JPのエンコーディングのみ失敗してしまいます。 (文字化けしたもののみ抽出すると、すべてEUC-JPでした) どのようなコードを書けば、正常にエンコードできるでしょうか。 どなたかご教示のほど、どうかよろしくお願いいたします。

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>$f = mb_convert_encoding($f,"utf-8","eucjp-win,utf-8,sjis-win,EUC-JP"); とりあえず(そのサイトが)EUC-JPであることが既知なら $f = mb_convert_encoding($f,"utf-8","eucjp-win"); と決め打ちしてもいいと思います。EUC-JP/eucjp-win以外でdetectされたって困るだけですから。 もし『どのサイトも同じロジックでやりたい』ということであれば、httpレスポンスヘッダのcharsetを確認すべきですし、それが存在しなかったらhtmlソース内のmeta要素を拾うようにすべきです(ブラウザもこの順番で行っているハズです)。 http://www.php.net/manual/ja/reserved.variables.httpresponseheader.php