Проблема с моджибаке в XML получена через cURL

Я забираю этот XML-канал через PHP cURL и вывод его в текстовой области на моей странице. Проблема в том, что он возвращается, полный символов моджибаке. Сам корм в порядке; только при выводе на мою страницу символы появляются.

Например, знаки фунта (£) возвращаются как £.

Я попытался бросить UTF-8 в этом вопросе, как предложено в ответе на этот вопрос.

ini_set('default_charset', 'UTF-8');
header("Content-Type:text/html; charset=UTF-8");

И в HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

и даже путем вывода ответа cURL через utf8_encode()И все же они сохраняются.

$ch = curl_init($feed_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$xml = curl_exec($ch);
echo '<textarea>'.utf8_encode($xml).'</textarea>';

Я даже пытался обменять эти символы, но это не сработало.

$xml = strtr($xml, array('£' => ''));

Я здесь бессилен или я могу что-то сделать?

0

Решение

использование htmlentities (http://php.net/manual/en/function.htmlentities.php) перед отображением содержимого XML на странице HTML также измените $ch в $xml в этом вызове так:

echo '<textarea>'.htmlentities($xml).'</textarea>';
1

Другие решения

utf8_encode() будет обрабатывать ввод как latin-1 и конвертировать его в utf-8. Если ввод utf-8, это будет двойная кодировка — это то, что вы видите.

Проверьте строку XML, которую вы извлекаете из URL. Кодировка файла XML обычно указывается в инструкции обработки XML:

<?xml version="1.0" encoding="utf-8"?>
<document-element/>

Загруженный в DOM, XMLReader или SimpleXML, он всегда будет конвертирован в UTF-8. Любое значение, которое вы прочитаете с помощью API, будет UTF-8.

Если вы хотите вывести UTF-8 XML в текстовую область вашей HTML-страницы, вам нужно экранировать специальные символы.

echo '<textarea>'.htmlspecialchars($xml).'</textarea>';

Это позволит избежать символов, таких как < а также >, но это необходимо. Представьте себе XML, содержащий строку </textarea>, Это сломало бы вашу HTML-страницу. Браузер расшифрует &lt; и другие объекты, прежде чем отображать их.

1

По вопросам рекламы [email protected]