dポイントプレゼントキャンペーン実施中!

現在、何らかの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でした)

どのようなコードを書けば、正常にエンコードできるでしょうか。
どなたかご教示のほど、どうかよろしくお願いいたします。

A 回答 (1件)

>$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. …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!