0

我試圖在Textview上顯示一個簡單的ñ(特殊西班牙語)字符,而不是ñ它顯示一些垃圾字符。我嘗試了許多SOV解決方案,但並未爲我工作。 ñ來自SOAP Web服務。在textview上的不正確的特殊字符在android

下面是代碼:

InputStream in = urlConnection.getInputStream(); 
SoapObject soapObject=Utility.InToSoapObject(in); 

public static SoapObject InToSoapObject(InputStream inputStream) { 
     SoapObject soap = null; 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER12); 
     try { 
      XmlPullParser p = Xml.newPullParser(); 
      p.setInput(inputStream, "utf-8"); 
      envelope.parse(p); 
      soap = (SoapObject) envelope.bodyIn; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return soap; 
    } 

,我到目前爲止已經試過,但我沒有工作

  1. 與\ u0148更換ñ事情很少

  2. (HTML .fromHtml(str)

  3. URLEncoder.encode(s TR)

  4. 更換UTF-8與ISO-8859-1

我從SOAP以正確的方式,我有交叉檢查提取的字符串字符。可能是UTF-8有一些問題。任何形式的幫助或建議將不勝感激。在此先感謝

+3

你在SO有兩個帳戶?你問同樣的問題[http://stackoverflow.com/questions/30972595/android-textview-displaying-wrong-character](http://stackoverflow.com/questions/30972595/android-textview-displaying-wrong-character ) –

+0

是的,但很少使用那個。我錯誤地發佈了問題..我經常使用這個帳戶..我已經從那裏刪除了這個問題。我認爲這不是一個問題.. –

+0

你能幫我解決上述問題的解決方案嗎? –

回答

1

當我從Web服務中提取字符串輸出時,但我將UTF-8替換爲ISO-8859-1時,它有同樣的問題,它得到解決。我使用的是以下內容,

使用ISO_8859-1格式將InputStream轉換爲BufferedReader,並處理由此產生的BufferedReader以String形式進行轉換。

private String getResponseString(InputStream stream) throws IOException { 

    BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"ISO-8859-1")); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
    } 
    finally { 
     stream.close(); 
    } 
    return sb.toString(); 
} 
+0

我也嘗試過這種方式,但沒有爲我工作。不過,我會再次看看這個解決方案..反正tnx –

+0

它爲我工作。通過將每個特殊字符轉換爲編碼值,我確實遇到了很大的麻煩(就像你提到用\ u0148替換ñ一樣)。最後找到了這個解決方案的一些地方,它的工作。我發佈了我最近使用它的代碼。希望它也適合你。如果是這樣接受:) –

+0

不適合我:(顯示「�」字符 –

0

試戴

String = URLEncoder.encode(string, "UTF-8"); 
+1

現在,而不是getting獲得「%EF%BF%BD」..正在尋找ñ字符..任何其他soln –