2011-01-12 12 views
1

私は’を持っているRSSフィードを解析しています。 SimpleXMLはこれを’に変えます。これをやめるために私は何ができますか?PHPのSimpleXMLが処理されない’適切に

私はCURLを使用してRSSフィードを取得しています。これをブラウザに直接出力すると、’は、’と表示されます。私はこれを使用して、新しいのSimpleXMLElement、(例えば$xml = new SimpleXmlElement($raw_feed);を作成し、$xml変数をダンプすると、’のすべてのインスタンスがâの€の™に置き換えている。

SimpleXMLのは、UTF-8アンパサンドエンコードされた文字とのトラブルを抱えていることが表示されます。( XML宣言はUTF-8を指定します。)

をSimpleXMLは要素を構成するために使用される前CURLのフィードを取得した後、私はフィードを制御を持っています。

+2

あなたがそれを解析した後、あなたは値で何をしていますか? DBに保存するか、ブラウザに表示しますか? – xil3

+0

あなたはどのように見えると思いますか? – Oded

+0

’または’ \t "右一重引用符"あなたはRSSを制御できますか? –

答えて

0

これは、4つの場所でUTF-8にデフォルトのエンコードを設定することに降りてきた:

  1. ファイルの先頭にデフォルトロケール:setlocale(LC_ALL, 'en_US.UTF8');
  2. CURLの出てくる文字列のエンコーディング:utf8_encode($string);
  3. デフォルトでUTF-8を使用するためにMySQLの接続設定:mysqli_set_charset($database_insert_connection, 'utf8');
  4. utf8_general_ci
  5. にMySQLデータベースに適切な照合を設定します

ブラウザに出力する場合は、適切なヘッダー(例: header ('Content-type: text/html; charset=utf-8');

これは将来的に誰かに役立つことを願っています!

2

’ことをUnicode文字(U + 2019)を表しUTF-8で0xE28099でエンコードされ、そのバイト列が01で解釈されるとは、â(0xE2)、(0x80)、および(0x99)の文字を表します。

つまり、SimpleXMLは入力をUTF-8エンコードとして処理しますが、その出力はWindows-1252と解釈します。実際にWindows-1252を使いたい場合を除き、specify the character encoding of your output properlyに足りないかもしれません。

+0

どうすればいいですか? – Matty

+0

@Matty:どうすればいいですか? – Gumbo

関連する問題