質問: iframe中にAmazonから取得したHTMLを埋め込んで表示させようとしていますが、時々文字化けします。こちら側のHTMLはmetaタグでUTF-8指定、Amazonが返すHTMLもUTF-8のようですが、charsetのmetaタグがないせいか、Chromeでは数回に一度の割で文字化けを起こします。古いIEでは問題ありません。 処理は、こちらのHTML中に以下のようにPHPで取得しています。 ``` ``` [取得スクリプト.php] ``` echo file_get_contents($url); ``` 取得スクリプト中で、取得したHTMLにmetaタグを埋め込んで返すことは可能かと思いますが、何か他に回避策があればご教示ください。よろしくお願いいたします。
回答: iframeの中の`charset`を現在のページから継承してくれればいいのですが、Chromeはそうではないようですね。`iframe`は、本来完結したHTML文書を埋め込むものなので、`iframe`の中に`charset`がないので自動識別して間違ったエンコーディングになっているように思います。それであれば、`iframe`を使うのであれば、metaタグを埋め込むしかないでしょう。 `取得スクリプト.php`の内容が、CSS等を含まないボディ部分のHTML要素であれば、`iframe`にするのではなくて、jQueryの`.load()`を使ってHTML要素を挿入した方がいいと思います。 ``` $("#result").load("取得スクリプト.php"); ```