Я читаю в HTML с URL-адреса, и хотя он помечен как UTF-8 в браузере, мне нужно iconv Windows-1252 // IGNORE, чтобы получить правильный результат.
$ch = curl_init();
$timeout = 10;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);
$html = iconv("UTF-8", "Windows-1252//IGNORE", $html);
echo ($html);
Вывод (длинный HTML-файл и необработанный вывод):<span class="price">€30 and under</span>
Для анализа DOMDocument я пробовал разные способы, включая принудительное использование кодировки UTF-8, но в основном
$tmp = new DOMDocument();
//$tmp->encoding = 'UTF-8';
$tmp->loadHTML($html);
echo $tmp->saveXML();
который выводит HTML как <span class="price">€30 and under</span>
, Этот символ является символом Windows 1252 за €, но я не могу понять, как преобразовать его обратно в оригинал (то же самое для других специальных символов).
Спасибо за любые идеи о том, как объяснить или исправить это действительно странное поведение DOMDoc!
FJ
Задача ещё не решена.
Других решений пока нет …