2012年7月17日火曜日

[Android]WebViewのloadDataで文字化けしてしまう対処

WebViewで簡単なhtmlを表示したい場合に、プログラム上でhtmlを書いてしまいたいことがあります。
(assetsにhtml用意したりしない)

そのときに、
WebView.loadData(String data, String mimeType, String encoding)を使うと文字化けてしまうのです。


webView = (WebView)findViewById(R.id.webView);
String data = "<html><head><meta http-equiv=\"content-type\" content=\"text/html;charset=UTF-8\"></head>";
data += "ウェブビューに表示するぞ!!";
webView.loadData(data, "text/html", "UTF-8");

XPERIA PLAY → OK文字化けしない
Google NEXUS → NG文字化けする

GNだと文字化けしてしまいました。
WebSettingsでデフォルトの文字コードを取得してみると、"Shitft_JIS"

WebSettingsの文字コード変えたり、
dataの文字コードを変えても変わらず。。


二進も三進もいかず、別のAPIを使ってみると・・・

webView.loadDataWithBaseURL(null, data, "text/html", "UTF-8", null);

あっさり成功。何なんでしょうね。。

0 件のコメント:

コメントを投稿