Autore Topic: Codifica caratteri  (Letto 750 volte)

Offline teo2490

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Codifica caratteri
« il: 25 Ottobre 2012, 22:11:28 CEST »
0
Ciao ragazzi,
qualcuno sa come visualizzare parte del codice html di una pagina con codifica iso-8859-1 in una webview visualizzando corrteemante i caratteri speciali? Io ho fatto così ma non funziona..

Codice (Java): [Seleziona]
package teo2490.credo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Calendar;
import java.util.GregorianCalendar;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;


public class Vangelo extends Activity {
       
        public WebView wb;
        private Button bottone1;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vangelo);
       
        wb = (WebView) findViewById(R.id.myWebView);
        wb.setBackgroundColor(Color.parseColor("#0099FF"));
        //
        WebSettings settings = wb.getSettings();
        settings.setDefaultTextEncodingName("iso-8859-1");
        //
        bottone1 = (Button) findViewById(R.id.bottone1);
        bottone1.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View view) {
                          finish();
                  }
                });
        /*
        //Listener per i pulsanti
        View.OnClickListener gestore = new View.OnClickListener() {
                  public void onClick(View view) {
                   
                    switch(view.getId()){
                               
                      case R.id.bottone1:
                       finish();                         
                        break;
                    }
                  }
        };
       
        bottone1.setOnClickListener(gestore);
        */

      //Connessione e recupero html
            Void params = null;
            AsyncTask<Void, Void, String> at = new DownloadFilesTask();
            at.execute(params);
    }

    //---------------------
    private class DownloadFilesTask extends AsyncTask<Void, Void, String> {
                private String html;
                private GregorianCalendar gc;
                @Override
            protected String doInBackground(Void... params) {
                  URL u = null;
                 
                  //Ottengo data
                gc = new GregorianCalendar();
               
                        try {
                                if(gc.get(Calendar.MONTH)+1<10){
                                        if(gc.get(Calendar.DAY_OF_MONTH)<10)    u = new URL("http://www.lachiesa.it/calendario/Detailed/"+gc.get(Calendar.YEAR)+"0"+(gc.get(Calendar.MONTH)+1)+"0"+gc.get(Calendar.DAY_OF_MONTH)+".shtml");
                                        else    u = new URL("http://www.lachiesa.it/calendario/Detailed/"+gc.get(Calendar.YEAR)+"0"+(gc.get(Calendar.MONTH)+1)+gc.get(Calendar.DAY_OF_MONTH)+".shtml");
                                }
                                else{
                                        if(gc.get(Calendar.DAY_OF_MONTH)<10)    u = new URL("http://www.lachiesa.it/calendario/Detailed/"+gc.get(Calendar.YEAR)+(gc.get(Calendar.MONTH)+1)+"0"+gc.get(Calendar.DAY_OF_MONTH)+".shtml");
                                        else    u = new URL("http://www.lachiesa.it/calendario/Detailed/"+gc.get(Calendar.YEAR)+(gc.get(Calendar.MONTH)+1)+gc.get(Calendar.DAY_OF_MONTH)+".shtml");
                                }
                        } catch (MalformedURLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                                  InputStream is = null;
                                try {
                                        is = u.openStream();
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                try {
                                        html = convertStreamToString(is);
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                               
                                String r = new String(extract(html));
                                return r;
            }
               
                  @Override
              protected void onPostExecute(String r) {
                         String init = new String("<br><div align=\"center\"><img src=\"http://www.oratoriogavardo.it/public/navphp/AndroidApp/ic_vangelo.png\"  width=\"150\" height=\"40\"></div><br>");
                 // aggiorno i campi
                 wb.loadData(init+"<font style=\"font:Tahoma\"><P ALIGN=\"JUSTIFY\"> "+r+"</P></font>", "text/html", "iso-8859-1");
                 //<img src=\"/Credo/res/drawable-hdpi/ic_vangelo.png\"/><br>
              }
                 
           
                  public String extract(String res){
                          String s1 = new String("Dal Vangelo");
                          String s2 = new String("Parola del Signore");
                          String ris = new String(res.substring(res.indexOf(s1), res.indexOf(s2)));
                          return ris;
                  }
               
                  private String convertStreamToString(InputStream is)
                          throws IOException {
                      //
                      // To convert the InputStream to String we use the
                      // Reader.read(char[] buffer) method. We iterate until the
                      // Reader return -1 which means there's no more data to
                      // read. We use the StringWriter class to produce the string.
                      //
                      if (is != null) {
                          Writer writer = new StringWriter();

                          char[] buffer = new char[1024];
                          try {
                              Reader reader = new BufferedReader(
                                      new InputStreamReader(is, "iso-8859-1"));
                              int n;
                              while ((n = reader.read(buffer)) != -1) {
                                  writer.write(buffer, 0, n);
                              }
                          } finally {
                              is.close();
                          }
                          return writer.toString();
                      } else {        
                          return "";
                      }
                  }
        }
    //---------------------
   
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_vangelo, menu);
        return true;
    }
}

Grazie! :-)