PHP Генерирует ошибку XML-кодирования RSS
Итак, у меня есть небольшой PHP-скрипт, который генерирует xml-представление для rss-канала моего блога. Однако это приводит к следующей ошибке:
Эта страница содержит следующие ошибки:
Ошибка в строке 23 в столбце 14: Ошибка кодирования
Ниже приведен рендеринг страницы до первой ошибки.
(см. здесь: http://aviatex14.co.uk/rss.xml)
Вот код, который его генерирует:
while ($line = mysql_fetch_array($result)) {
$return[] = $line;
var_dump(date("Y-m-d H:i:s", $line['timestamp']));
}
$now = date("D, d M Y H:i:s T");
$output = "<?xml version=\"1.0\" encoding=\"UTF-16\" ?>
<rss version=\"2.0\">
<channel>
<title></title>
<link></link>
<description></description>
<pubDate></pubDate>
<language>en-us</language>
<lastBuildDate>$now</lastBuildDate>
";
foreach ($return as $line) {
$output .= "<item><title>".htmlentities($line['title'])."</title>
<link>http://blog.aviatex14.co.uk/permalink.php?uid=".htmlentities($line['uid'])."</link>
<description>".htmlentities(strip_tags($line['entry']))."</description>
<pubDate>".$date = date("Y-m-d H:i:s T", $line['timestamp'])."</pubDate>
</item>";
}
$output .= "</channel></rss>";
print "Content-Type: application/rss+xml";
echo $output;
$f = fopen("rss.xml", "w");
fwrite($f, $output);
fclose($f);
Буду признателен за любую помощь! :D
2 answers
В этой строке написано "ТОКИО � японец" (и далее в ленте также). � не является utf-8. Попытайтесь utf8_encode
( или iconv
если вы хотите другую кодировку) контент или даже лучше: используйте XML-процессор для создания канала.
Вам необходимо настроить свою базу данных или подключение. Попробуйте выполнить mysql_set_charset('utf8');
после подключения к базе данных.
Http://php.net/manual/en/function.mysql-set-charset.php
P.S.
Вы должны использовать <?xml version="1.0" encoding="UTF-8" ?>
или удалить эту строку. Ваш вывод выглядит как 8 бит на основе.