Soru & Cevap

Android Webview Türkçe Karakter Sorunu

22.09.2013 - 01:15

Merhaba 

Local html sayfayi webview e yukluyorum ama tarayicida ve ios de sorun cikarmayan turkce karakterler android webview de gorunmuyor.

Cozum adina tavsiyeleriniz varmidir ?

159 Görüntülenme

10 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user yasinkafadar
yasinkafadar
25.09.2013 - 09:08

html koduna <div data-role="content" style="background-color:yellow; color:#FF0000">  ekleyip deneyince android 4.2.2'de bir sorun olmadı. Background beyaz gelir derken neyi kast ediyorsun?

/sites/default/files/cevaplar/dosya/2020/file-device-2013-09-25-090812.png
picture-1529-1379601126.png
mtnozhan
24.09.2013 - 04:34

webview.loadDataWithBaseURL("", html, "text/html", "utf-8", "");    //Background beyaz gelir

 

 

 

 

Profile picture for user yasinkafadar
yasinkafadar
23.09.2013 - 10:18

Tekrardan Selam Erhan,

Ben şöyle birşey denedim ve çalıştı.

Önce assetten html'in içeriğini okuyup bir string'de tutuyorum. Onu'da loadData ile yüklüyorum. Umarım işini görür. Emulator'den aldığım ekran görüntüsü ekte.

WebView ile ilgili hiçbir şey yapmadım. Direk senin kodları copy-paste yaptım :)

Kod:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);

        // webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        // webView.getSettings().setLoadsImagesAutomatically(true);

        // webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

        webView.getSettings().setDefaultTextEncodingName("utf-8");
        
        String htmlContent = readAssets("index.html");
        webView.loadData(htmlContent, "text/html", "utf-8");
//        webView.loadUrl("file:///android_asset/index.html");
    }

    private String readAssets(String path){
        
        InputStream inputStream = null;
        Reader reader = null;
        try {
            inputStream = getAssets().open(path);
            reader = new InputStreamReader(inputStream, "UTF-8");
            
            StringBuffer buffer = new StringBuffer();
            char[] chrBuffer = new char[1024];
            
            int lengthOfReadBytes;
            while ((lengthOfReadBytes = reader.read(chrBuffer)) != -1) {
                buffer.append(chrBuffer, 0, lengthOfReadBytes);
            }
            
            return buffer.toString();
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    reader = null;
                }
            }
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    inputStream = null;
                }
            }
        }
        
        return null;
    }


}

/sites/default/files/cevaplar/dosya/2020/file-webview.png
picture-761-1516090514.jpg
erhanby
23.09.2013 - 12:39

Tabiki gonderirim , size ulasabilecegim bir mail adresi almam gerekicek veya burada mesajlasma imkani var mi?

Profile picture for user yasinkafadar
yasinkafadar
23.09.2013 - 11:19

Selam Erhan,

Eğer içinde gizli bir bilgi yoksa index.html'i göndermen mümkün müdür? 

picture-539-1376512244.jpg
enessen
23.09.2013 - 11:04

Selam Erhan,

    Encodding problemi için kendimde çalışan bir örneği denedim.Ancak bir problem göremedim.
Tavsiyem yüklediğin html in head kısmına,yok ise "<meta http-equiv=Content-Type content="text/html; charset=UTF-8">" ifadesini eklemen. Birde aynı HTML i kaydederken de UTF-8 kaydedildiğinden emin olman.

Umarım işine yarar.

picture-761-1516090514.jpg
erhanby
23.09.2013 - 09:22

loadUrl ile yüklemeye calisiyorum , gayet basarili bi sekilde yukleniyor tum resourcelar .Anlayamadigim Ö harfi de hatasiz ekrana basiliyor ama İ ve ş harflerini goruntuleyemiyor.Html de charset url - 8 olarak set edilmis.Zaten html de sorun olmadigi iOS uygulamasinda  ayni html i yukleyince herhangi bi turkce karakter sorunu olmadigindan anlasilabiliyor.Kod su sekilde 

        webView = (WebView) findViewById(R.id.webview); 

        webView.getSettings().setJavaScriptEnabled(true);

        //webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        //webView.getSettings().setLoadsImagesAutomatically(true);

        //webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

        webView.getSettings().setDefaultTextEncodingName("utf-8");

        webView.loadUrl("file:///android_asset/index.html");

 

Son olarak turkce karakter sorunu disinda javascript slider image larini gostermiyor android uygulamasi , yine iOS de herhangi bir sorun olmamasina ragmen.

picture-472-1375079047.jpg
mehmet.altiparmak
22.09.2013 - 12:57

sonradan biraz kurcalayınca bug konusunda emin olamadım. loadUrl ile mi yüklemeye çalışıyorsun html dosyayı? Html içerisinde belirttiğin encoding ile dosya encoding i birbiri ile örtüşüyor mu?

picture-472-1375079047.jpg
mehmet.altiparmak
22.09.2013 - 11:16

Merhaba Erhan,

loadData fonksiyonunda bug vardı diye hatırlıyorum. Aşağıdaki linkte bir tartışma var.

http://code.google.com/p/android/issues/detail?id=3552

alternatif olarak yüklemek istediğin html bir dosyaya yazarak dosyayı loadUrl fonksiyonu ile yükleyebilirsin.

Ornek olarak assets altındaki bir dosyayı yüklemek için:

webView.loadUrl("file:///android_asset/htmlsayfasi.htm");