Php 来自MySQL的RSS-带有特殊字符的问题
你好!! 我使用上面的代码从MySql数据库生成rss提要。它工作得很好,直到我在条目中添加特殊字符,例如:,/,ä,ö,ü,ß,等等。 我明白了 此页面包含以下错误: 第377列第1行出错:编码错误 正确显示带有特殊字符的行之前的所有内容 您应该使用对所有值进行编码 比如:Php 来自MySQL的RSS-带有特殊字符的问题,php,mysql,xml,rss,feed,Php,Mysql,Xml,Rss,Feed,你好!! 我使用上面的代码从MySql数据库生成rss提要。它工作得很好,直到我在条目中添加特殊字符,例如:,/,ä,ö,ü,ß,等等。 我明白了 此页面包含以下错误: 第377列第1行出错:编码错误 正确显示带有特殊字符的行之前的所有内容 您应该使用对所有值进行编码 比如: <?php header('Content-type: text/xml; charset=utf-8'); DEFINE ('DB_USER', 'root'); DEFINE ('D
<?php
header('Content-type: text/xml; charset=utf-8');
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'rss');
$output = '<?xml version="1.0" encoding="UTF-8"?>';
$output .= '<rss version="2.0">';
$output .= '<channel>';
$output .= '<title>Feed Demo</title>';
$output .= '<description>News Feed from MySQL test.</description>';
$output .= '<language>de</language>';
$connection = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die('-');
mysql_select_db(DB_NAME) or die ('-');
$query = "SELECT * FROM entry ORDER BY date DESC";
$result = mysql_query($query) or die ('-');
while($row = mysql_fetch_array($result)) {
extract($row);
$output .= '<item>';
$output .= '<title>' . $title . '</title>';
$output .= '<description>' . $description . '</description>';
$output .= '<link>' . $link . '</link>';
$output .= '<pubDate>' . date("d. F Y, H:i", strtotime($date)) . '</pubDate>';
$output .= '</item> ';
}
$output .= '</channel>';
$output .= '</rss>';
echo($output);
?>
while($row=mysql\u fetch\u array($result)){
摘录(行);
$output.='';
$output.=''.utf8_编码($title)。'';
$output.=''.utf8_编码($description)。'';
$output.=''.$link';
$output.=''.date(“d.F Y,H:i”,标准时间($date));
$output.='';
}
始终或仅当其数据库表不是UTF-8时才调用此函数?如果您使用的是非utf8数据,并且希望将其输出为UTF-8错误答案和错误解释,则应始终调用此函数。仅适用于拉丁语-1,而不是设置数据库客户端字符集。答案也有误:XML中的文本需要编码,否则您可能会输入ct XML,尽管您不想。ok@hakre,我不知道拉丁语-1。非常感谢您提供的信息。但是对于XML编码,没有在以下行设置:$output=”;
?不,您只告诉我文档是UTF-8格式的(这实际上被标题('Content-type:text/XML;charset=UTF-8'))
但正如它所说的utf-8一样,它也是utf-8的超级种子。然而,这只是一个提示,在具体情况下,所有字符串在输出之前都必须进行utf-8编码。到目前为止,您希望数据库返回拉丁-1编码的字符串,然后将其重新编码为utf-8。但是,请告诉数据库驱动程序您需要utf-8字符串,并让dat请执行重新编码。告诉您的数据库您希望使用UTF-8字符串,因为您希望将UTF-8字符串输出为XML:。除此之外,使用XML库生成RSS XML,SimpleXML在您的情况下就足够了:
while($row = mysql_fetch_array($result)) {
extract($row);
$output .= '<item>';
$output .= '<title>' . utf8_encode($title) . '</title>';
$output .= '<description>' . utf8_encode($description) . '</description>';
$output .= '<link>' . $link . '</link>';
$output .= '<pubDate>' . date("d. F Y, H:i", strtotime($date)) . '</pubDate>';
$output .= '</item> ';
}