11

我有数据库,其中数据以印地语存储,\u092e\u0948\u0902 \u0924\并使用下面的方法将该内容设置为 webview。

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

但它会显示为

印地语内容显示为

我不知道为什么会这样。请任何人建议。如何解决这个问题!

4

5 回答 5

9

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);
于 2013-04-23T09:15:52.063 回答
4

这是此答案的副本:

您还需要对这些序列进行转义,并参考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 视图文档

于 2013-04-23T09:33:37.310 回答
1

您将需要使用字体来支持印地语(android 尚未完全支持印地语)创建Typeface的 Singleton 实例并调用 createFromAsset(); 并像这样将其添加到 WebSettings

WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(InstaceOFTypeFace);
于 2013-04-23T07:34:28.093 回答
1

最后我想出了将印地语内容加载到 webview 的解决方案。

我只是更改了加载字符串,不幸的是它会起作用。

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

谢谢大家的努力。:)

于 2013-04-30T04:29:59.393 回答
0

你也可以使用这个。

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

可能这会对你有所帮助。

于 2013-08-08T11:38:31.907 回答