2016-06-01 2 views
0

Здравствуйте, я пытаюсь загрузить HTML (из строки)андроид WebView не могу вынести мой родной язык

Вот RSS канал (я получаю ссылку оттуда и после этого HTML строки из определенного класса):

http://www.naec.ge/index.php?option=com_rsssyndicator&feed_id=1&format=raw

Как вы можете видеть, что закодировано в utf-8, но до сих пор я не могу сделать его, он дает мне этот результат: android web view result

Ниже приведены фрагменты кода:

class parseText extends AsyncTask<String,Void,String> 
    { 

     protected String doInBackground(String... params) 
     { 
      try { 
       org.jsoup.nodes.Document doc = Jsoup.connect(url).get(); 
       System.out.println("hey kurwo "+doc.getElementsByClass("article-content")); 
       data = doc.getElementsByClass("article-content").toString(); 
      } catch (IOException e) { 
       e.printStackTrace(); System.out.println("jeban!!"); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      System.out.println("chiken boneZZZ"); 
      view.loadData(data,"text/html","UTF-8"); 
      super.onPostExecute(s); 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 
    } 

} 

Кроме этого, я не думаю, что есть какие-либо проблемы:

public class NewsDetails extends Activity 
{ 
    static String url; 
    WebView view; 
    TextView info; 
    static String data; 
    String address; 
    Bundle bundle; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.detailed_news_layout); 
     bundle = getIntent().getExtras(); 
     url = bundle.getString("Link"); 
     view = (WebView) findViewById(R.id.webview); 
     new parseText().execute(); 
    } 
+0

fixed: view.loadData (data, "text/html", "utf-8"); это не работает view.loadDataWithBaseURL (null, data, "text/html", "UTF-8", null); это будет, легко peasy .. – NaughyPiligrim69

+0

Не связано с вашим вопросом, но: зачем присваивать результат полем 'data' вместо использования безопасного потока? Вы можете вернуть строку вместо нуля и получить ее в параметре «s» 'onPostExecute'. Вы должны помнить, что 'doInBackground' и' onPostExecute' не вызываются в одном потоке. Если поле 'data' не будет изменено, это может привести к проблемам синхронизации. –

+0

Я буду держать это в виду, thx чувак для приятного ответа. – NaughyPiligrim69

ответ

0

здесь дело, вы должны использовать loaddatawithbaseurl вместо LoadData(), вот пример: это не будет работать view.loadData(data,"text/html","utf-8"); это будет работать:

view.loadDataWithBaseURL (null, data, "text/html", "UTF-8", null);

Смежные вопросы