データがヒンディー語で保存されたデータベースがあり、\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 バージョンのエンコード パラメータのバグが原因で発生します。このパラメーターは何らかの理由で無視されるため、UTF-8 ベースのヒンディー語文字はレンダリングされません。これを修正するには、次のいずれかの方法を使用できます。
webview1.loadData(hindi_content, "text/html; charset=UTF-8", null);
webview1.loadDataWithBaseURL(null, hindi_content, "text/html", "utf-8", null);
これはこの回答の複製です:
また、これらのシーケンスをエスケープ解除する必要があります。これを行うには、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 ドキュメント
最後に、ヒンディー語コンテンツを webview にロードするという解決策を思いつきました。
ローディング文字列を変更しただけですが、残念ながら動作します。
webview.loadData(Hindi_css, "text/html; charset=UTF-8", null);
ご尽力いただきありがとうございます。:)
これも使えます。
String uri= Uri.encode(html file/url);
webView.loadUrl(uri);
これはあなたを助けるかもしれません。