Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 来自MySQL的RSS-带有特殊字符的问题_Php_Mysql_Xml_Rss_Feed - Fatal编程技术网

Php 来自MySQL的RSS-带有特殊字符的问题

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

你好!! 我使用上面的代码从MySql数据库生成rss提要。它工作得很好,直到我在条目中添加特殊字符,例如:,/,ä,ö,ü,ß,等等。 我明白了

此页面包含以下错误:

第377列第1行出错:编码错误 正确显示带有特殊字符的行之前的所有内容

您应该使用对所有值进行编码

比如:

<?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> ';
}