0

Wordpress のエクスポート機能から生成された XML ファイルを解析しようとしています。ブロックからテキストを取得しましたが、テキストをエコーすると、不正な形式になり、ASCII になると思います。

<?php

header("Content-Type: text/plain; charset: UTF-8;");

$source = file_get_contents("blog.wordpress.2013-10-31.xml");

$xml = simplexml_load_string($source);

$items =  $xml->channel->item;

foreach($items as $item) {
    $namepsaces = $item->getNameSpaces(true);
    $content = $item->children($namepsaces['content']);
    if($content != '') {
        echo '#' . $item->title . "#\n";
        echo $content->encoded;
        echo "\n\n\n";
    }
}

そうAs the BBC’sなるでしょうAs the BBC’s。とにかく、私はこれを止めることができますか?

編集: echo '“Test”' を追加しました。ヘッダーの直後に変更すると、ブラウザーに「Test」と表示されるので、これは SimpleXML の問題ではないようです。

4

3 に答える 3

0

UTF-8 ' (0xE2 0x80 0x99) は WINDOWS-1252 â € ™ であり、それはまさにあなたが説明したものであるため、UTF-8 でエンコードされた文字列を WINDOWS-1252 としてロードしているようです。

要素または属性から読み取るときの SimpleXML の出力は常に UTF-8 でエンコードされるため、その部分についてはコードに問題はありません。

そのため、XML ファイルに間違ったエンコーディングが示唆されている可能性が高くなります。それを修正すれば問題ないはずです(そのファイルを表示していないため、正確に何を変更する必要があるのか​​ 、そもそもなぜエンコーディングが混同されたのか、おそらく転送の問題などを言うのは難しいです)。

パーサーに送信する前に、XML ファイルを再エンコードする必要がある場合があります。もしそうなら、役に立つかもしれません。XMLRecoder

于 2013-10-31T15:34:43.743 に答える
0

You are using a colon here: charset: UTF-8

The correct code is

header('Content-Type: text/html; charset=utf-8');
于 2014-01-06T01:20:13.367 に答える