Я много искал, но не нашел решения, почему мой читатель rss останавливается на специальных символах, таких как etc. ø å 'и т. Д.
Читатель читает ленту, пока не встретит специальный символ, затем прекратит чтение этого элемента и перейдет к следующему.
Поэтому, когда я отображаю новости в моем приложении, мой текст обрезается специальным символом, это очень раздражает!
Конечно, это как-то связано с кодированием, но я просто не могу понять, что делать с моим кодом.
Этот код хорошо работает с другими каналами, такими как http://www.fyens.dk/rss/sport, который находится в кодировке iso-8859-1. С этим каналом он отображает специальные символы без проблем. Но если я попробую канал типа http://ob.dk/forum/rss.aspx?ForumID=3&Mode=0, который является UTF-8, проблема возникнет.
Есть предложения по решению этой проблемы?
try {
//open an URL connection make GET to the server and
//take xml RSS data
URL url = new URL("http://ob.dk/forum/rss.aspx?ForumID=3&Mode=0");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream is = conn.getInputStream();
//DocumentBuilderFactory, DocumentBuilder are used for
//xml parsing
DocumentBuilderFactory dbf = DocumentBuilderFactory
.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
//using db (Document Builder) parse xml data and assign
//it to Element
Document document = db.parse(is);
Element element = document.getDocumentElement();
//take rss nodes to NodeList
NodeList nodeList = element.getElementsByTagName("item");
if (nodeList.getLength() > 0) {
for (int i = 0; i < nodeList.getLength(); i++) {
//take each entry (corresponds to <item></item> tags in
//xml data
Element entry = (Element) nodeList.item(i);
Element _titleE = (Element) entry.getElementsByTagName(
"title").item(0);
Element _descriptionE = (Element) entry
.getElementsByTagName("description").item(0);
Element _pubDateE = (Element) entry
.getElementsByTagName("pubDate").item(0);
Element _linkE = (Element) entry.getElementsByTagName(
"link").item(0);
String _title = _titleE.getFirstChild().getNodeValue();
String _description = _descriptionE.getFirstChild().getNodeValue();
Date _pubDate = new Date(_pubDateE.getFirstChild().getNodeValue());
String _link = _linkE.getFirstChild().getNodeValue();
int time = _pubDate.getHours()-2;
_pubDate.setHours(time);
RssItem rssItem = new RssItem("OB.dk: "+_title, _description,
_pubDate, "http://www.google.com/gwt/x?u="+_link);
rssItems.add(rssItem);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}