Mambo 站点使用 FeedCreator class v1.7.2 存在缓冲编码问题

由 徐永久 发表于 2005年09月25日 16:30。

RSS 技术和 Firefox 下的 livebookmark 是目前内容聚合的亮点。? 我的某网站采用了开放源码的 Mambo 来架构。
但是其 RSS 输出存在问题, 不仅其中的日期时区被固定在 +0100 ,而且还有严重的编码问题。

本文没有提出系统修改的解决方案。 仅仅在解决编码问题上做出一些小的 Hack 。

在 /includes/feedcreator.class.php 这段主要代码中:

要修改的地方如下:

define(“TIME_ZONE”,”+08:00″);
var $encoding = “gb2312”;
主要是看以下这段代码, 就知道读 Cache 文件的时候, encoding 有问题, 所以必须修改以上 encoding 的设置。
实际上, 以下这段代码应该先读取 $filename 内的 encoding , 然后设置输出 encoding 为新的 encoding 。

function _redirect($filename) {
// attention, heavily-commented-out-area

// maybe use this in addition to file time checking
//Header(“Expires: “.date(“r”,time()+$this->_timeout));

/* no caching at all, doesn’t seem to work as good:
Header(“Cache-Control: no-cache”);
Header(“Pragma: no-cache”);
*/

// HTTP redirect, some feed readers’ simple HTTP implementations don’t follow it
//Header(“Location: “.$filename);

//Header(“Content-Type: “.$this->contentType.”; charset=”.$this->encoding.”; filename=”.basename($filename));
Header(“Content-Type: “.$this->contentType.”; charset=”.$this->encoding);
Header(“Content-Disposition: inline; filename=”.basename($filename));
readfile($filename, “r”);
die();
}