2010-09-14 57 views
0

我正在尝试使用Google Reader API处理RSS提要,但问题是,即使提要编码是UTF-8,它也会以不可读的格式返回。定义RSS提要编码

resp.contentType = "text/xml" 
resp.characterEncoding = "UTF-8" 

URL url = new URL("http://www.google.com/reader/public/atom/feed/" + rss); 
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), Charset.forName("UTF-8"))); 
String line; 
StringBuilder content = new StringBuilder(); 
while ((line = reader.readLine()) != null) { 
    content.append(line + "\n"); 
} 
reader.close(); 
def feed = new XmlParser().parseText(content.toString()) 
... 
new XmlNodePrinter(resp.writer).print(feed) 

是否有任何额外的编码设置,我错过了?该代码在Google App Engine上运行。

+1

我们将需要比“以不可读的格式返回”更多的信息。怎么了?你怎么确定它是不可读的?你会得到一个异常,什么是堆栈跟踪? – 2010-09-14 09:21:10

+1

@Nick非英文字符渲染不正确,其他都没问题 – Vitaliy 2010-09-14 13:19:11

+0

我正在使用这个例子 - > http://www.mkyong.com/spring-mvc/spring-3-mvc-and-rss-feed-example /,我在项目中遇到同样的问题。 – 2017-03-28 11:46:20

回答

0

如果你使用更习惯的Groovy,会发生什么?我认为您的所有代码都可以替换为:

def feed = new URL("http://www.google.com/reader/public/atom/feed/$rss").withReader('UTF-8') { r -> 
    new XmlParser().parse(r) 
} 

... 

new XmlNodePrinter(resp.writer).print(feed) 
+0

非常好,我不知道为什么,但现在没关系。可能是什么原因? – Vitaliy 2010-09-14 13:20:17

+0

不确定...流 - >阅读器charset链可能已经出现了问题。看起来不错,只是有点长啰;-) – 2010-09-14 13:23:31

+0

如何在春天mvc中使用它?用 - >这个例子 - > http://www.mkyong.com/spring-mvc/spring-3-mvc-and-rss-feed-example/ – 2017-03-28 11:39:55