Androidアプリでいくつかのウェブビューを使用していますが、utf-8エンコードで表示することはできません。
これを使用すると、スカンジナビアの文字が表示されません。
mWebView.loadUrl("file:///Android_asset/om.html")
これを試しても、何も表示されません
mWebView.loadDataWithBaseURL("file:///Android_asset/om.html", null, "text/html", "utf-8",null);
よろしく
データをロードする前に、webviewの設定を編集してみることができます。
WebSettings settings = mWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
また、以下のコメントで提供されているように、必ず"charset=utf-8"
loadData呼び出しに:
mWebView.loadData(getString(R.string.info_texto), "text/html; charset=utf-8", "utf-8");
これは、何らかの形またはファッションで永遠に壊れていたようです。 問題17
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ドキュメント
一部は、mimeType
にcharset=utf-8
を含めることを要求するloadData呼び出しの動作の変更を報告しています。
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", "UTF-8");
この定式化はWebSettings
でも使用できます
WebView webView = (WebView) findViewById(R.id.DemoWebView);
WebSettings webSettings = webView.getSettings();
webSettings.setDefaultTextEncodingName("utf-8");
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", null);
Androidがまだこの基本的な問題を解決していないことは驚くべきことです。
上記のDerzuのビットは非常に役立ちます。
webview.loadData(getString(R.string.info_texto), "text/html; charset=utf-8", "utf-8");
Adroid 2.xでutf-8を使用し、4.xでANSIを文字化けしました。
charset=utf-8
wv.loadUrlWhatever()呼び出しで。細部へのこだわり、デルズ
HTTPサーバーによって配信されるHTMLページでコンテンツのエンコードを指定できる方法は2つあります。通常、サーバーはHTTPヘッダーでコンテンツのエンコードを指定しますが、このページはファイルからロードされるため、HTTPトランザクションはなく、したがってヘッダーもありません。その結果、WebViewはLatin-1のデフォルトエンコーディングを想定しています。
ただし、_<meta>
_タグを使用してコンテンツのエンコードを指定できます。 htmlファイルを次のように作成します。
_<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Title</title>
</head>
Your content following
_
そして、mWebView.loadUrl("file:///Android_asset/om.html");
を使用してWebViewにロードします。期待どおりに非ラテン文字が表示されるはずです。
WebView wv = (WebView) findViewById(R.id.rowWebview);
WebSettings settings = wv.getSettings();
settings.setDefaultTextEncodingName("utf-8");
wv.loadData(topHtml, "text/html; charset=utf-8",null);
この2つの組み合わせがうまくいくようです。何らかの理由で、エンコーディングでnullが、mimeタイプでcharsetが好きです:/奇妙です。これは私にとって数ヶ月間の悪化を解決しました。
最初の2つの引数を交換する必要があります。このスレッドを参照してください: Android WebView UTF-8 not show
したがって、コードは次のようになります。
mWebView.loadDataWithBaseURL(null, "file:///Android_asset/om.html", "text/html", "utf-8",null);
mwebView.loadData(URLEncoder.encode(data, "utf-8").replaceAll("\\+"," "), "text/html", "utf-8");
適切なコンテンツを常に表示するには、次の3つの点に留意する必要があります。
例は他の回答を介して提供されているので、繰り返しはしません!
そのページを読み込む前にあなたが何をしているのか分かりません。このセキュリティの変更は何か関係がありますか?以前にウェブからページを読み込んでいますか?
ポスト1.0に関する注意。 WebKitの変更により、サブリソースの「file:/// Android_asset /」を介したアセットファイルへのアクセスはより制限されます。 nullまたは空の文字列をbaseUrlとして指定すると、アセットファイルにアクセスできなくなります。 baseUrlがスキームとしてhttp(s)/ ftp(s)/ about/javascript以外の場合、サブリソースのアセットファイルにアクセスできます。
ここから: http://developer.Android.com/reference/Android/webkit/WebView.html メソッド「loadDataWithBaseURL」のセクション。
クイックテストの代わりに「loadData」を使用できますか?スカンジナビア文字をエンコードしてデータパラメーターに貼り付けるには、「utf-8」を指定します。セキュリティの問題を取り除く簡単なテスト。