2012-04-25 2 views
3

コンテンツを表示するためのHTMLを作成するために、次のJavaコードを使用しています。データのWebページ:特定のWebView text/htmlコンテンツ文字列でtext/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(); 
} 

私はTSIを開いたときに、私は今、これは私のArrayList<TSI>の約60%〜70%のために動作しますが、他人のために、私はエラーを取得する

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

を使用した文字列をロードするには:

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

これは、文字セット内の奇妙な文字と関係があると想定しています。エラーメッセージは何を意味しますか?

+0

http://stackoverflow.com/a/20356555を参照してください。/236743 – Dori

答えて

9

i.itemTextまたはi.itemTitleに、パーセント記号、バックスラッシュまたはその他のアルファベット以外の文字のような奇妙な文字がありますか?そうすると、 'ウェブページが見つかりません'という問題が発生します。

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

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

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

この問題は、HTMLエンティティ(アンパサンドポンド37)と、すべての%記号を置き換えることで回避することができます(&#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

+0

はい、はい、はい...そうです。ブラウザで使用する特定の文字セットを指定するか、文字セットをよりブラウザフレンドリなものに変換できますか? –

+0

ありがとうございます。私はこれをユーティリティメソッドとして使用しています.WebViewを使うのがはるかに簡単です。公共の静的な無効loadAndCleanData(WebViewのWebViewの、文字列のHTML){ \t \t試し{ \t \t \t webView.loadData( \t \t \t \t \t URLEncoder.encode(HTML、 "UTF-8")。replaceAll( "\\ +"、 "")、 \t \t \t \t \t "text/html"、 "utf-8"); \t \t}キャッチ(にUnsupportedEncodingException UEE){ \t \t \tスロー新しいRuntimeExceptionは、( \t \t \t \t \t "のWebViewに文字列をロードする場合、UTF-8エンコーディングに失敗しました")。 \t \t} \t} –

+0

ありがとう、この1つは私の問題を解決しました。私のwebviewにロードするHTML文字列のほとんどはうまくいきますが、この種の問題を経験した人もいます。文字列UTF-8をエンコードするだけで、すべてが期待どおりに動作する – denil

関連する問題