11

データがヒンディー語で保存されたデータベースがあり、\u092e\u0948\u0902 \u0924\以下を使用してそのコンテンツをwebviewに設定しました。

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

しかし、それは次のように表示されます

ヒンディー語コンテンツの表示

なぜそれが起こっているのかわかりません。誰か提案してください。それを修正する方法!

4

5 に答える 5

9

loadDataこれは、ほとんどの Android バージョンのエンコード パラメータのバグが原因で発生します。このパラメーターは何らかの理由で無視されるため、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

これはこの回答の複製です:

また、これらのシーケンスをエスケープ解除する必要があります。これを行うには、Java で Unicode をエスケープする方法を参照してください。

loadData を使用した WebView での UTF-8 のレンダリングは、何らかの形または方法で永遠に壊れています。 発行 1733

loadData の代わりに loadDataWithBaseURL を使用します。

// 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);

ここで本当に厄介なのは、Samsung Galaxy S II (4.0.3) では loadData() が問題なく動作することですが、Galaxy Nexus (4.0.2) でテストすると、loadDataWithBaseURL( を使用しない限り、マルチバイト文字が文字化けします。 )。WebView ドキ​​ュメント

于 2013-04-23T09:33:37.310 に答える
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 に答える