私はウェブビューを持っていて、それにシンプルなUTF-8テキストをロードしようとしています。
mWebView.loadData("將賦予他們的傳教工作標示為", "text/html", "UTF-8");
しかし、WebViewはANSI/ASCIIガベージを表示します。
明らかにエンコーディングの問題ですが、webviewにUnicodeテキストを表示するように指示する際に何が欠けていますか?
これはHelloWorldアプリです。
使用する:
mWebView.loadDataWithBaseURL(null, "將賦予他們的傳教工作標示為", "text/html", "utf-8", null);
または setDefaultTextEncoding でWebSettingsを使用:
WebSettings settings = mWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
WebView mWebView = (WebView) findViewById(R.id.myWebView);
WebSettings settings = mWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
mWebView.loadData(myCharacters, "text/html; charset=utf-8",null);
または
mWebView.loadData(myCharacters, "text/html; charset=utf-8","UTF-8");
これは、何らかの形または方法で永遠に壊れたようです。 問題17
// 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");
私がサムスンギャラクシーIIで開発していたときに、上司が私に彼の電話、初期のネクサスを最初に持ってきたとき、それは非ASCII文字がたくさんある彼の電話の経済ニュースフィードに表示されました。したがって、これはAndroid内で長年の問題であるだけでなく、デバイスメーカー間でも一貫していません。これは、防御的にプログラミングしなければならない問題です。