PHPのFacebookアプリケーションUTF-8の問題

私は別のサイトからのRSSフィードを開き、フィードから選択したアイテムを表示するPHPを使用してFacebook Iframeアプリケーションを開発しています。 RSSフィードはUTF-8でエンコードされていますが、選択した項目を表示すると、文字はISO-8859として表示されます。

Example: "Don’t" instead of "Don't"

これは私の作業コードです:

 $doc = new DOMDocument();
  $doc->load('https://www.otherwebsite.com/rss.php');

  foreach ($doc->getElementsByTagName('item') as $node) {
            $title = $node->getElementsByTagName('title')->item(0)->nodeValue;
            if ($title == $chinese->getAnimal()){
              $horoscope = $node->getElementsByTagName('description')->item(0)->nodeValue;
           }      
  }    
  echo '

Your horoscope : ' . $horoscope . '

'; }

私はPHPのバージョン5.2を使用しています。質問や提案は感謝して受け入れられるでしょう、私はまだPHPを学んでいるので、私はより熟練した実務家には分かりませんでした。

0

3 答え

ウェブページにUTF-8用の適切なhtmlヘッダーとメタが設定されていることを確認します。



<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>WAMP</title>
<meta name='Description' content='Website Under Construction' />
</head>
<body>
CONTENT
</body>
</html>

それをエコーする前に、文字列をUTF-8にキャストしてみてください。

$horoscope = utf8_encode("Your Horoscope : $horoscope");
echo $horoscope;
1
追加された
ありがとうskibulk、ヘッダーを追加するトリックでした。私の脳はFBMLモードで、私は過去にはなかったようにヘッダーをしませんでした。しかし、これは普通のiframeで、標準HTMLが必要です。私もエンコードしようとしましたが、動作するには遅すぎます。
追加された 著者 MikeAinOz,

試す

echo 'Your horoscope : ' . utf8_encode($horoscope);

ただし、これはISO-8859-1でのみ機能します。

Alternatively 試す

$in_encoding = "ISO-8859-1"; //replace with the encoding of the RSS feed
echo 'Your horoscope : ' . iconv($in_encoding, "UTF-8", $horoscope);
1
追加された
また、PHPソースコードのエンコーディングをチェックするよりも
追加された 著者 palmic,

header( 'Content-Type:text/html; charset = iso-8859-1')

これをあなたのPHPファイルの最上部に追加してみてください。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com