2012-08-15 106 views
1

我有一些RSS源,我在我的Android應用程序中收到的XML。這個想法很簡單,它只是接收RSS更新並顯示它們。除了展示一些正確的詞語外,我管理了所有內容問題是數據是用其他語言編寫的,而我的應用程序是使用英語的(我對這些事情我不太瞭解)。例如:語言在應用程序Android

09:05KAMIONDŽIJE

20:05Dočeknašiholimpijaca ispredSkupštinegrada

之類的東西..你看那些Z,C,S字母..他們都顯示爲一些其他未知的我的語言..有誰知道如何解決這個問題..我只是希望它是因爲它是用RSS的XML文件編寫的,而不是以任何方式更改。

這是我的完整解析類:

public class XMLParser { 

// constructor 
public XMLParser() { 

} 

/** 
* Getting XML from URL making HTTP request 
* @param url string 
* */ 
public String getXmlFromUrl(String url) { 
    String xml = null; 

    try { 
     // defaultHttpClient 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 

     HttpResponse httpResponse = httpClient.execute(httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     xml = EntityUtils.toString(httpEntity); 

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    // return XML 
    return xml; 
} 
/** 
* Getting XML DOM element 
* @param XML string 
* */ 

public Document getDomElement(String xml){ 
    Document doc = null; 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    dbf.setCoalescing(true); 
    dbf.setNamespaceAware(true); 
    try { 
     DocumentBuilder db = dbf.newDocumentBuilder(); 

     InputSource is = new InputSource(); 
      is.setCharacterStream(new StringReader(xml)); 
      doc = db.parse(is); 

     } catch (ParserConfigurationException e) { 
      Log.e("Error: ", e.getMessage()); 
      return null; 
     } catch (SAXException e) { 
      Log.e("Error: ", e.getMessage()); 
      return null; 
     } catch (IOException e) { 
      Log.e("Error: ", e.getMessage()); 
      return null; 
     } 

     return doc; 
} 

/** Getting node value 
    * @param elem element 
    */ 
public final String getElementValue(Node elem) { 
    Node child; 
    if(elem != null){ 
     if (elem.hasChildNodes()){ 
      for(child = elem.getFirstChild(); child != null; child = child.getNextSibling()){ 
       //if(child.getNodeType() == Node.TEXT_NODE ){ 
       if(child.getNodeType() == Node.TEXT_NODE || child.getNodeType() == Node.CDATA_SECTION_NODE){ 
        return child.getNodeValue(); 
       } 
      } 
     } 
    } 
    return ""; 
    //return elem.getTextContent(); 
} 

/** 
    * Getting node value 
    * @param Element node 
    * @param key string 
    * */ 
public String getValue(Element item, String str) {  
     NodeList n = item.getElementsByTagName(str);     
     return this.getElementValue(n.item(0)); 
    } 
public String getValue2(Element item, String str){ 
    //NodeList n = item.getElementsByTagNameNS("http://purl.org/rss/1.0/modules/content/", str); 
    return item.getTextContent(); 
} 


} 

回答

0

您應該確保該文本被分析爲UTF-8。但是當你這樣做的時候,你仍然會有一些奇怪的字符,但這是正常的......很多語言都有奇怪的字符。丹麥(我的根)有æøå。

編輯

試試這個:

EntityUtils.toString(httpEntity,"UTF-8"); 
+0

如何檢查,這是UTF-8解析? ..我知道這些詞的意思,它們是我家鄉的詞(塞爾維亞),但我只希望它們在應用程序中正確顯示。 – Igx33 2012-08-15 11:45:17

+0

那麼你需要在讀取數據的地方顯示你的代碼。 – Warpzit 2012-08-15 11:47:07

+0

好吧,我編輯我的帖子..檢查,注意getValue2是<內容:編碼>的東西,getValue1是正常東西.. – Igx33 2012-08-15 11:50:15