2013-02-18 37 views
11

Avevo un database in cui i dati sono stati memorizzati in hindi come \u092e\u0948\u0902 \u0924\ e l'impostazione di tali contenuti in webview utilizzando di seguito.Il carattere hindi non verrà visualizzato correttamente nella visualizzazione Web

webview1.loadData(hindi_content, "text/html", "UTF-8"); 

Ma sarà visualizzato come

hindi content display as

Non so perché quello che sta succedendo. Qualunque consiglio, per favore. come aggiustarlo!

+0

http://stackoverflow.com/a/7395170/1168654 –

+0

Questa domanda ha già una risposta. È un duplicato. –

+1

Il trucco che ha menzionato laggiù non funziona ancora. Potresti controllare la stringa che sto usando per visualizzare il testo in hindi !! E potresti per favore fare nuovamente riferimento alla domanda! – user1621629

risposta

6

Questo accade a causa di un bug con il parametro codifica di loadData nella maggior parte delle versioni di Android. Questo parametro viene ignorato per qualche motivo, quindi i caratteri hindi basati su UTF-8 non verranno renderizzati. Per risolvere questo problema è possibile utilizzare una delle seguenti alternative.

webview1.loadData(hindi_content, "text/html; charset=UTF-8", null); 


webview1.loadDataWithBaseURL(null, hindi_content, "text/html", "utf-8", null); 
+0

Non funziona. Ho un dispositivo Android a nido d'ape. – user1621629

+0

Puoi dare un piccolo esempio di ciò che hindi_content contiene esattamente (formattazione e così via)? –

+0

"\ u092e \ u0948 \ u902 \ u0924 \" parole hindi memorizzate nel DB. e sembrerà "आप". – user1621629

1

è necessario utilizzare dei caratteri al fine di sostenere hindi (non la lingua Hindi è ancora pienamente supportato da Android) creare l'istanza Singleton di Carattere e invocare createFromAsset(); e aggiungerlo al WebSettings come questo

WebSettings webSettings = webView.getSettings(); 
webSettings.setFixedFontFamily(InstaceOFTypeFace); 
+0

Ho provato tutti questi. Non funziona. – user1621629

4

Questo è un duplicato di this answer:

È inoltre necessario unescape quelle sequenze e per farlo si riferiscono a How to Unescape Unicode in Java

Rendering UTF-8 in una WebView utilizzando loadData è stato rotto in qualche forma o moda per sempre. Issue 1733

Utilizzare loadDataWithBaseURL invece di loadData.

// Pretend this is an html document with those three characters 
String scandinavianCharacters = "øæå"; 

// Won't render correctly 
webView.loadData(scandinavianCharacters, "text/html", "UTF-8"); 

// Will render correctly 
webView.loadDataWithBaseURL(null, scandinavianCharacters, "text/html", "UTF-8", null); 

Ora la parte che è veramente fastidiosa è che il Samsung Galaxy S II (4.0.3) loadData() funziona bene, ma i test sul Galaxy Nexus (4.0.2) i caratteri multi-byte sono confusi a meno che non si usi loadDataWithBaseURL(). WebView Documentation

1

Finalmente ho trovato la soluzione di caricamento del contenuto hindi per la visualizzazione web.

Ho semplicemente cambiato la mia stringa di caricamento e purtroppo funzionerà.

webview.loadData(Hindi_css, "text/html; charset=UTF-8", null); 

Grazie a tutti per il vostro impegno. :)

0

È possibile utilizzare anche questo.

String uri= Uri.encode(html file/url); 
    webView.loadUrl(uri); 

potrebbe essere questo ti aiuterà.

Problemi correlati