最近也遇到了这个问题,把我的解决方法抛砖引玉一下 :P
增加一个feeds的fetcher plugin,extents FeedsHTTPFetcher
实现fetch(),将非utf-8的charset都改成utf-8(1)改charset(2)用iconv转换内容的编码
代码如下:
public function fetch(FeedsSource $source) {
$fetcher_result = parent::fetch($source);
$raw = $fetcher_result->getRaw();
// Convert document to UTF-8
if (preg_match('/<meta.+?charset=([-\w]+).*\/>/i', $raw, $matches) && strtolower($matches[1]) !== 'utf-8') {
$meta = str_replace('charset=' . $matches[1], 'charset=utf-8', $matches[0]);
$raw = str_replace($matches[0], $meta, $raw);
$raw = @iconv($matches[1], 'utf-8//IGNORE', $raw);
$fetcher_result = new FeedsFetcherResult($raw);
}
return $fetcher_result;
}