2013-02-18 44 views
11

我有數據庫中的數據存儲在印地文爲\u092e\u0948\u0902 \u0924\並將該內容設置爲webview使用下面。印地文字符將不會正確顯示在web視圖

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

但它會顯示爲

hindi content display as

我不知道爲什麼會發生的事情。任何人請建議。如何解決這個問題!

+0

http://stackoverflow.com/a/7395170/1168654 – 2013-04-23 07:14:29

+0

此問題已被回答。這是重複的。 – 2013-04-23 09:36:26

+1

在那裏提到的技巧仍然無法正常工作。你能否檢查我用來顯示印地文文本的字符串!你能再請參考問題! – user1621629 2013-04-23 09:44:51

回答

6

這是因爲與loadData在大多數的Android版本的編碼參數中的錯誤。由於某些原因,該參數被忽略,所以基於UTF-8的印地文字符將不會被渲染。 要解決此問題,您可以使用以下其中一種替代方法。

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


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

不工作。我有android蜂窩設備。 – user1621629 2013-04-23 09:19:19

+0

你能給一個什麼樣的hindi_content精確地包含一個小樣本嗎(格式化和這樣的)? – 2013-04-23 09:51:31

+0

「\ u092e \ u0948 \ u0902 \ u0924 \」存儲在數據庫中的印地文字。它會看起來像「आ」「。 – user1621629 2013-04-23 09:57:04

1

,您將需要以支持印地文使用的字體 (印地文語言還沒有由Android完全支持)創建字樣的Singleton實例並調用createFromAsset(); 並將其添加到WebSettings這樣

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

我嘗試了所有這些。不工作。 – user1621629 2013-04-23 09:14:01

4

這是this answer重複:

您還需要取消轉義這些序列,並做參考How to Unescape Unicode in Java

渲染使用loadData一個的WebView UTF-8已被打破一些形式或時尚永遠。 Issue 1733

使用loadDataWithBaseURL代替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); 

現在是真正討厭的部分是對三星Galaxy S II(4.0.3)loadData()工作得很好,但在測試上的Galaxy Nexus(4.0.2)的多字節字符除非使用loadDataWithBaseURL(),否則會出現亂碼。 WebView Documentation

1

最後我想出了加載hindi內容到webview的解決方案。

我只是改變我的加載字符串,不幸的是它會工作。

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

謝謝大家的努力。 :)

0

你也可以使用這一個。

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

可能這會幫助你。