2011-11-02 49 views
3

我搜索了很多,但還沒有找到一個解決方案,爲什麼我的RSS閱讀器停止在特殊字符如æ○「等 閱讀者閱讀的飼料,直到它運行到一個特殊的字符 - 然後它停止閱讀該元素,並繼續下一個。 所以,當我在我的應用程序顯示的消息我的文字是在特殊字符切斷,這是非常煩人! 當然,它與編碼有關,但我無法弄清楚如何處理我的代碼。安卓:RSS解析停止在特殊字符

此代碼與像http://www.fyens.dk/rss/sport這在ISO-8859-1編碼其它飼料效果很好。有了這個飼料,它顯示了沒有問題的特殊字符。但是,如果我嘗試使用像UTF-8這樣的http://ob.dk/forum/rss.aspx?ForumID=3&Mode=0這樣的Feed,則會發生問題。

如何解決這個問題有什麼建議?

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(); 
    } 

回答

1
+0

感謝您的幫助,是的,但該文章使用String xml.getBytes(「UTF8」)) - 並且我有一個InputStream並且不能使用該方法。我試過ByteArrayInputStream test = new ByteArrayInputStream(is.toString()。getBytes(「UTF8」));但那不起作用。我怎樣才能將輸入流編碼爲UTF8? – bengaard

+0

那麼這個頁面讓我感到http://www.codinggreenrobots.com有另一個rss例子,它可以很好地處理特殊字符。 – bengaard

+0

很高興你知道了。 – eightx2