0

Я пытаюсь показать простой символ ñ (специальный испанский) в текстовом режиме, но вместо ñ он отображает некоторый символ нежелательной почты . Я попробовал много решений SOV, но не работал для меня. ñ поступает с веб-службы SOAP.Неправильный специальный символ в текстовом виде в 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 тр)

  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

У меня была такая же проблема, когда я извлекал вывод String из webservice, но когда я заменил UTF-8 на ISO-8859-1, он был разрешен. То, что я использовал, было следующим:

Преобразовал InputStream в BufferedReader с использованием формата ISO_8859-1 и обработал полученный 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

Я тоже пробовал, но не работал для меня. Тем не менее, я снова посмотрю на это решение. ... tunx –

+0

Это сработало для меня. У меня действительно были огромные проблемы, преобразовывая каждый из специальных символов с значениями кодирования (как вы упомянули, заменяя - с помощью \ u0148). Наконец нашел это решение, где и где он работал. Я опубликовал код, который я использую все это в наши дни. Надеюсь, он тоже сработает для вас. Если да, то принимайте это :) –

+0

Не работает для меня :(показывая символ «¿¿» –

0

пытаясь угадать

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

теперь вместо получаю «% EF% BF% BD» .. смотря на символ ... любой другой soln –