0

Tomcatで実行されているJavaサーブレットを使用し、phpファイルにメッセージを送信してIMDBのムービー情報を取得し、XMLとしてサーブレットに返す必要があるクラスの割り当てを行っています。以下のようなXMLタグを継続的に取得しているため、指定したエンコーディングを受け入れたくないようです。

      <result cover="url" title="Pok&#xE9;mon" year="1998 TV Series" director="N/A" rating="7.8" details="http://www.imdb.com/title/tt0176385/"/>

ポケモンのタイトルがe(«é»)の上にアクセントを付けるべきところ。xmlを生成するための次のphpコードがあります。(重要部品のみ)

    <?php header("Content-Type: text/xml; charset=utf-8");
    $xml = new DOMDocument();
    $rsp = $xml->appendChild($xml->createElement("rsp"));
    $xml->encoding = 'utf-8';

    $titleNames[$i] = utf8_encode($title_tmp[1]);

    $results = $rsp->appendChild($xml->createElement("results"));
    $results->setAttribute("total", $tableRows);

    $item->setAttribute("title", $titleNames[$i]);

    echo $xml->saveXML();
    ?>

特殊文字を正しく表示する方法を理解する上で、どんな助けでも大歓迎です!

4

1 に答える 1

0

コードフラグメント(実行されない)から何が問題なのかを言うことは不可能ですが、$xml->encoding = 'utf-8'機能するはずです。比較してください:

$xml = new DOMDocument();
$rsp = $xml->appendChild($xml->createElement("rsp"));
$rsp->setAttribute("title", 'Pokémon');
echo $xml->saveXML();
/*
<?xml version="1.0"?>
<rsp title="Pok&#xE9;mon"/>
*/

... と:

$xml = new DOMDocument();
$xml->encoding = 'utf-8';
$rsp = $xml->appendChild($xml->createElement("rsp"));
$rsp->setAttribute("title", 'Pokémon');
echo $xml->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<rsp title="Pokémon"/>
*/

(これらのスニペットはUTF-8として保存されることが期待されています)。

于 2012-11-13T09:15:52.070 に答える