PHP Создать RSS XML - Ошибка кодирования - PullRequest
4 голосов
/ 20 июня 2011

Итак, у меня есть небольшой 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 ]

6 голосов
/ 20 июня 2011

В этой строке написано «TOKYO A Japanese» (и далее внизу в фиде). это не utf-8. Попробуйте utf8_encode (или iconv, если вам нужна другая кодировка) содержимого или даже лучше: используйте XML-процессор для создания канала.

1 голос
/ 21 июня 2011

Вы должны настроить свою базу данных или соединение.Попробуйте выполнить mysql_set_charset('utf8'); после подключения к базе данных.

http://php.net/manual/en/function.mysql-set-charset.php

PS Вам следует использовать <?xml version="1.0" encoding="UTF-8" ?> или отбросить эту строку.Ваш вывод выглядит как 8-битный.

...