2011-06-20 83 views
4

因此,我有一個小的PHP腳本,可以爲我的博客的RSS源生成xml感覺。然而,它拋出了這個錯誤:PHP生成RSS XML - 編碼錯誤

This page contains the following errors:

error on line 23 at column 14: Encoding error
Below is a rendering of the page up to the first error.

(這裏看到: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

+0

我想知道什麼'htmlentities'在其他地方使用。無論如何,你應該提供一個'charset'來使它至少爲它自己工作:http://php.net/manual/en/function.htmlentities.php – hakre

+0

'encoding = \「UTF-16 \」' - 這是真的是輸出的真正的編碼? – hakre

+0

這條線沒有錯誤了。顯然,OP在詢問後更改了Feed。投票結束。 – Gordon

回答

6

它在那條線上說「TOKYO 一個日本人」(並且進一步在飼料中也是如此)。 不是utf-8。嘗試utf8_encode(或iconv,如果您想要不同的編碼)內容或甚至更好:use an XML processor來創建Feed。

+0

XML以UTF-16編碼呈現,而不是UTF-8。 – hakre

+0

@hakre然後OP在我回答時改變了。當我下載飼料時,它肯定是utf8。我已經添加iconv作爲附加解決方案。 – Gordon

+0

作品,在給我這個問題的程度上...第157行第33行的錯誤:打開和結束標記不匹配:第0行和描述....我寧願不必回去修復標記:( – AviateX14