2010-09-14 2 views
0

Я пытаюсь обработать RSS-канал с помощью Google Reader API, но проблема в том, что даже если кодирование корня - 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

Нам потребуется дополнительная информация, чем «она возвращается в нечитаемом формате». Что происходит? Как вы определили, что он не читается? Вы получаете исключение, и что такое stacktrace? –

+1

@Nick Неанглийские символы были визуализированы неправильно, другие были в порядке – Vitaliy

+0

Я использую этот пример -> http://www.mkyong.com/spring-mvc/spring-3-mvc-and-rss-feed-example /, у меня такая же проблема в проекте. –

ответ

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

+0

Не уверен ... Возможно, что-то произошло с цепочкой цепочек stream-> reader. Выглядит хорошо, хотя, немного длинный ветер ;-) –

+0

Как использовать его весной mvc? с -> этот пример -> http://www.mkyong.com/spring-mvc/spring-3-mvc-and-rss-feed-example/ –