我有数据库,其中数据以印地语存储,\u092e\u0948\u0902 \u0924\
并使用下面的方法将该内容设置为 webview。
webview1.loadData(hindi_content, "text/html", "UTF-8");
但它会显示为
我不知道为什么会这样。请任何人建议。如何解决这个问题!
我有数据库,其中数据以印地语存储,\u092e\u0948\u0902 \u0924\
并使用下面的方法将该内容设置为 webview。
webview1.loadData(hindi_content, "text/html", "UTF-8");
但它会显示为
我不知道为什么会这样。请任何人建议。如何解决这个问题!
loadData
发生这种情况是因为大多数 Android 版本中的 encoding 参数存在错误。由于某种原因,此参数被忽略,因此不会呈现基于 UTF-8 的印地语字符。要解决此问题,您可以使用以下替代方法之一。
webview1.loadData(hindi_content, "text/html; charset=UTF-8", null);
webview1.loadDataWithBaseURL(null, hindi_content, "text/html", "utf-8", null);
这是此答案的副本:
您还需要对这些序列进行转义,并参考How to Unescape Unicode in Java
使用 loadData 在 WebView 中渲染 UTF-8 已经以某种形式或方式永远被破坏了。 第 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( )。Web 视图文档
您将需要使用字体来支持印地语(android 尚未完全支持印地语)创建Typeface的 Singleton 实例并调用 createFromAsset(); 并像这样将其添加到 WebSettings
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(InstaceOFTypeFace);
最后我想出了将印地语内容加载到 webview 的解决方案。
我只是更改了加载字符串,不幸的是它会起作用。
webview.loadData(Hindi_css, "text/html; charset=UTF-8", null);
谢谢大家的努力。:)
你也可以使用这个。
String uri= Uri.encode(html file/url);
webView.loadUrl(uri);
可能这会对你有所帮助。