48237


iframe中にAmazonから取得したHTMLを埋め込んで表示させようとしていますが、時々文字化けします。こちら側のHTMLはmetaタグでUTF-8指定、Amazonが返すHTMLもUTF-8のようですが、charsetのmetaタグがないせいか、Chromeでは数回に一度の割で文字化けを起こします。古いIEでは問題ありません。

処理は、こちらのHTML中に以下のようにPHPで取得しています。

[code]

    <iframe src="取得スクリプト.php" ...>
    
[/code]

[取得スクリプト.php]

[code]

    echo file_get_contents($url);
    
[/code]

取得スクリプト中で、取得したHTMLにmetaタグを埋め込んで返すことは可能かと思いますが、何か他に回避策があればご教示ください。よろしくお願いいたします。


CC BY-SA 4.0
2018-09-09T09:13:30.023
48234
2018-09-10T03:55:37.123
27804
question
html5
iframe中のHTMLに文字コードを指定するには？


iframeの中の`charset`を現在のページから継承してくれればいいのですが、Chromeはそうではないようですね。`iframe`は、本来完結したHTML文書を埋め込むものなので、`iframe`の中に`charset`がないので自動識別して間違ったエンコーディングになっているように思います。それであれば、`iframe`を使うのであれば、metaタグを埋め込むしかないでしょう。

`取得スクリプト.php`の内容が、CSS等を含まないボディ部分のHTML要素であれば、`iframe`にするのではなくて、jQueryの`.load()`を使ってHTML要素を挿入した方がいいと思います。

[code]

    $("#result").load("取得スクリプト.php");
    
[/code]


CC BY-SA 4.0
2018-09-09T13:07:06.307
48237
2018-09-10T03:55:37.123
2018-09-10T03:55:37.123
15171
15171
48234
answer