WebViewのloadDataでの文字化け

506 views
Skip to first unread message

miyayuk

unread,
Oct 22, 2010, 8:28:45 AM10/22/10
to 日本Androidの会
miyayukと申します。

現在、WebViewのloadDataを用いて
ローカルデータでのhtml表示をさせようとしているのですが
エミュレータ上で実行すると
日本語だけ文字化けして表示されてしまいます。

loadDataの引数にあるencoding以外でも
何か設定しないと正常に日本語が表示されないのでしょうか。
どなたかわかる方いましたら返信いただけると幸いです。

※下記にソースを記載いたします。

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class webviewtest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

WebView webView = new WebView(this);

String html = "<font>test</font><br>";
html += "<hr>";
html += "<table><tr><td>title</td><td>contents</td></tr>";
html += "<tr><td>FinalFantasy13</td><td>XBOX360でもリリース予定</td></
tr></table>";
webView.loadData(html, "text/html", "utf-8");
setContentView(webView);
}
}

Hiroshi HARA

unread,
Oct 22, 2010, 10:06:19 AM10/22/10
to android-g...@googlegroups.com
miyayukさん

はじめまして、原と申します。
<head>部も追加し、charsetを設定して、loadDataすれば
表示されませんでしょうか。
(String htmlに<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head>...</html>まで含める。)

ご参考になれば幸いです。

よろしくお願い致します。

2010年10月22日21:28 miyayuk <miy...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


miyayuk

unread,
Oct 22, 2010, 12:20:56 PM10/22/10
to 日本Androidの会
原さん

はじめまして、miyayukです。

返信ありがとうございました。

結論から言いますと、開発環境を替えたら文字化けせずに表示されました。
もしかしたらEclipseの設定がおかしかったかもしれません。
(文字化けしていたPCのEclipseの文字コードもUTF-8でしたが…)

とりあえずは、問題なく表示されているPCにて開発を行っていこうと思います。
もし原因がわかりましたら、履歴としてここに返信しておくつもりです。

お騒がせいたしました。

yokochi

unread,
Oct 22, 2010, 12:32:52 PM10/22/10
to android-g...@googlegroups.com
miyayukさん

はじめまして。yokochiです。

loadDataを使う場合、1.x系と2.x系でそれぞれ動作確認したほうがいいかもしれません。
自分も以前、同様の現象があり、1.6では大丈夫だけど、2.1だと文字化けるというのがありました。
そのときは#が入っていると文字化けてました(他にもあるかもしれません)
回避策としては、loadDataではなく、loadDataWithBaseURLを使うと問題なく表示されました。

一応ご参考までに

2010年10月23日1:20 miyayuk <miy...@gmail.com>:

flare.w

unread,
Oct 22, 2010, 9:44:24 PM10/22/10
to android-g...@googlegroups.com
ちょっと試してみたんですが、エミュレータでは日本語の表示はされていますね。

実機だと表示できないのかな……?
(僕はandroid端末を持ってないんですよねー)

とりあえずutf-8を指定しているのですから、HTMLソース部分もエンコーディングするべきなのではないでしょうか?

(例)
html += "<tr><td>FinalFantasy13</td><td>XBOX360%e3%81%a7%e3%82%82%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e4%ba%88%e5%ae%9a%e3%81%a0%e3%81%8a%ef%bc%81</td></ tr></table>";

エンコードにはURLエンコードツールを使えばいいんじゃないかと。



2010年10月22日21:28 miyayuk <miy...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages