我正在尝试使用rome(1.0)创建Feed聚合器。一切正常,但我遇到饲料字符集的问题。我正在使用java 1.6在mac os x(netbeans 6.9.1)上开发它。
我正在使用以下代码检索Feed:
InputStream is = new URL(_source).openConnection().getInputStream();
SyndFeed feed = (SyndFeed) input.build(new InputStreamReader(is, Charset.forName(_charset)));
其中_source
是rss源(如http://rss.cnn.com/rss/edition.rss),_charset
是UTF-8或ISO-8859-1。
它有效,但有些网站有拉丁字符(如葡萄牙语),即使我同时使用这两种编码也不行。
例如,从http://oglobo.globo.com/rss/plantaopais.xml读取的Feed将始终返回虚拟字符,如下所示:
秘密保罗(UTF-8)
SecretáriodeSão Paulo (ISO-8859-1)
为什么呢?我错过了什么吗?
如果我尝试使用像UTF-16这样的东西,罗马会抛出一个错误:com.sun.syndication.io.ParsingFeedException:无效的XML:第1行出错:prolog中不允许使用内容。
我尝试过其他编码,比如US-ASCII,没有幸运......
另一个问题:罗马是处理Feed的最佳解决方案(使用java)吗?来自罗马的最新版本是从2009年开始的1.0版本。似乎已经死了......
TIA,
鲍勃答案 0 :(得分:6)