私が解析しているいくつかのXMLファイル(多くの場合RSS)で、ノードからテキストを抽出した後にToday’s Newest
なりつつあるような文字を含むテキストに出くわします。Today’s Newest
これは、デコードプロセスを正しく処理していないことを示しています。
スクリプトにパッチを適用してこの1つのバグを修正することもできますが、文字化けしている他の多くの文字がある場合はどうなりますか?UTF-8スクリプトに変換するときに、エンコーディングを破棄せずにXMLファイルをダイジェストする適切な方法は何ですか?
これが私が試したもののいくつかですが、うまくいかないようです:
$xml = file_get_contents($file);
// One: still contains ’
//$xml = @iconv('UTF-8', 'UTF-8//IGNORE', $xml);
// Two: LibXMLError Entity 'rsquo' not defined
//$xml = htmlentities($xml, null, 'UTF-8');
//$xml = htmlspecialchars_decode($xml, ENT_QUOTES);
// Three: still contains ’
//$xml = mb_convert_encoding($xml, "UTF-8", "UTF-8");
$xml = simplexml_load_string($xml, null, LIBXML_NOCDATA | LIBXML_NOENT);