Определить кодировку RSS-канала - PullRequest
0 голосов
/ 14 сентября 2010

Я пытаюсь обработать RSS-канал с помощью Google Reader API, но проблема в том, что, даже если кодировка канала - UTF-8, он возвращается в нечитаемом формате.

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 Ответ

0 голосов
/ 14 сентября 2010

Что произойдет, если вы сделаете с более идиоматическим 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 )
...