2012-08-15 86 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