【发布时间】:2014-08-02 12:21:42
【问题描述】:
我正在尝试基于 MySQL 查询的 PHP 输出开发我自己的 XML RSS 提要。但是,即使我已将所有内容设置为 UTF8 编码和字符集(数据库连接、xml 版本、utf8_encode),我仍不断收到我的 DB 内容字段中所有 ASCII 字符的“实体 X 未定义”错误消息,但没有任何内容可以消除错误:
<?php
$connection = mysqli_connect( .... )
$connection->set_charset("utf8");
header("Content-type: text/xml; charset=utf-8");
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<rss version="2.0">';
$query = mysqli_query($connection,"SELECT * FROM news ORDER BY pubdate DESC LIMIT 10");
while($row = mysqli_fetch_assoc($query)){
$title = utf8_encode($row['title']);
$content = utf8_encode($row['content']);
echo '<item><title>'.$title.'</title>';
echo '<description>'.$content.'</description></item>';
} // end while
echo '</channel>';
echo '</rss>';
?>
我错过了什么?
非常感谢!
【问题讨论】:
-
请在问题中包含生成的 XML 代码(或足够长的摘录)。
-
您遇到的问题是您手动创建 XML,而不是使用为创建 XML 而创建的库,例如 SimpleXML 或 DOMDocument。这些库负责对您从数据库中获取的 UTF-8 编码字符串进行正确的 XML 编码。
标签: php mysql xml character-encoding rss