3

次のJavaコードを使用して、コンテンツを表示するためのHTMLを作成しています。

public String htmlFromArrayList(ArrayList<TSI> a) {

    StringBuilder returnStringBuilder = new StringBuilder();

    for (TSI i : a) {
        returnStringBuilder.append("<h3>");
        returnStringBuilder.append(i.itemTitle);
        returnStringBuilder.append("</h3><p>");
        returnStringBuilder.append(i.itemText);
        returnStringBuilder.append("</p>");
    }

    return returnStringBuilder.toString();
}

私が使用する文字列をロードするには

mWebView.loadData(htmlFromArrayList(mSummaryItemArrayList), "text/html", null);

現在、これは私の約60%から70%で機能しますが、他の場合は、 :ArrayList<TSI>を開くとエラーが発生します。TSI

The web page at data:text/html;null,%3Cp%E.......p%3E might be temporarily down or it may have moved...

これは、文字セット内の奇妙な文字と関係があると思います。エラーメッセージはどういう意味ですか?

4

1 に答える 1

9

i.itemText または i.itemTitle にパーセント記号、バックスラッシュ、その他のアルファベット以外の文字などの奇妙な文字が含まれていますか? その場合、「Web ページが見つかりません」という問題が発生します。

http://code.google.com/p/android/issues/detail?id=4401

また、エンコーディングを渡していません。null の代わりに「UTF-8」を渡してみてください。

mWebView.loadData(htmlFromArrayList(mSummaryItemArrayList), "text/html", "utf-8");

この問題は、すべての % 記号を HTML エンティティ (アンパサンド ポンド 37): (%) に置き換えることで回避できます。

中国語の文字が webView に入力されると、パーセント記号を処理しても「ページが見つかりません」という問題が発生する可能性があるという報告があります。したがって、回避策はこれを試すことです:

これは、すべてに加えて漢字で機能します。

mWebView.loadData(URLEncoder.encode(html,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8");

ソース http://code.google.com/p/android-rss/issues/detail?id=15

于 2012-04-25T14:45:01.437 に答える