我有數據庫中的數據存儲在印地文爲\u092e\u0948\u0902 \u0924\
並將該內容設置爲webview使用下面。印地文字符將不會正確顯示在web視圖
webview1.loadData(hindi_content, "text/html", "UTF-8");
但它會顯示爲
我不知道爲什麼會發生的事情。任何人請建議。如何解決這個問題!
我有數據庫中的數據存儲在印地文爲\u092e\u0948\u0902 \u0924\
並將該內容設置爲webview使用下面。印地文字符將不會正確顯示在web視圖
webview1.loadData(hindi_content, "text/html", "UTF-8");
但它會顯示爲
我不知道爲什麼會發生的事情。任何人請建議。如何解決這個問題!
這是因爲與loadData
在大多數的Android版本的編碼參數中的錯誤。由於某些原因,該參數被忽略,所以基於UTF-8的印地文字符將不會被渲染。 要解決此問題,您可以使用以下其中一種替代方法。
webview1.loadData(hindi_content, "text/html; charset=UTF-8", null);
webview1.loadDataWithBaseURL(null, hindi_content, "text/html", "utf-8", null);
不工作。我有android蜂窩設備。 – user1621629 2013-04-23 09:19:19
你能給一個什麼樣的hindi_content精確地包含一個小樣本嗎(格式化和這樣的)? – 2013-04-23 09:51:31
「\ u092e \ u0948 \ u0902 \ u0924 \」存儲在數據庫中的印地文字。它會看起來像「आ」「。 – user1621629 2013-04-23 09:57:04
,您將需要以支持印地文使用的字體 (印地文語言還沒有由Android完全支持)創建字樣的Singleton實例並調用createFromAsset(); 並將其添加到WebSettings這樣
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(InstaceOFTypeFace);
我嘗試了所有這些。不工作。 – user1621629 2013-04-23 09:14:01
這是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
最後我想出了加載hindi內容到webview的解決方案。
我只是改變我的加載字符串,不幸的是它會工作。
webview.loadData(Hindi_css, "text/html; charset=UTF-8", null);
謝謝大家的努力。 :)
你也可以使用這一個。
String uri= Uri.encode(html file/url);
webView.loadUrl(uri);
可能這會幫助你。
http://stackoverflow.com/a/7395170/1168654 – 2013-04-23 07:14:29
此問題已被回答。這是重複的。 – 2013-04-23 09:36:26
在那裏提到的技巧仍然無法正常工作。你能否檢查我用來顯示印地文文本的字符串!你能再請參考問題! – user1621629 2013-04-23 09:44:51