我有数据库,其中数据以\u092e\u0948\u0902 \u0924\
的形式存储在hindi中,并使用下面的内容将该内容设置为webview。
webview1.loadData(hindi_content, "text/html", "UTF-8");
但它会显示为
我不知道为什么会这样。任何人请建议。如何解决这个问题!
答案 0 :(得分:7)
这是因为大多数Android版本中loadData
的编码参数存在错误。由于某种原因忽略此参数,因此不会呈现基于UTF-8的印地语字符。
要解决此问题,您可以使用以下备选方案之一。
webview1.loadData(hindi_content, "text/html; charset=UTF-8", null);
webview1.loadDataWithBaseURL(null, hindi_content, "text/html", "utf-8", null);
答案 1 :(得分: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
答案 2 :(得分:1)
你需要使用字体才能支持hindi(Android还没有完全支持印地语) 创建 Typeface 的Singleton实例并调用createFromAsset(); 并将其添加到像这样的WebSettings
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(InstaceOFTypeFace);
答案 3 :(得分:1)
最后,我提出了将hindi内容加载到webview的解决方案。
我只是更改了我的加载字符串,不幸的是它会起作用。
webview.loadData(Hindi_css, "text/html; charset=UTF-8", null);
谢谢大家的努力。 :)
答案 4 :(得分:0)
你也可以使用这个。
String uri= Uri.encode(html file/url);
webView.loadUrl(uri);
可能会对你有帮助。