0

箇条書き、著作権記号、商標記号を Web ブラウザーで表示すると、問題なく表示されます。

// bullets: http://losangeles.craigslist.org/wst/acc/2900906683.html
// bullets: http://losangeles.craigslist.org/lac/acc/2902059059.html
// bullets: http://indianapolis.craigslist.org/acc/2867115357.html
// bullets: http://indianapolis.craigslist.org/ofc/2885697780.html
// bullets: http://indianapolis.craigslist.org/ofc/2887554512.html
// copyright: http://chicago.craigslist.org/nwc/acc/2854640931.html

しかし、Android WebView を次のように使用すると、「三角形の中に疑問符」が表示されます。

web.loadDataWithBaseURL(null, myHtml, null, "UTF-8", null);

別のエンコーディングを使用する必要がありますか?

特定の文字を自分で検索/置換する必要があります... 1 つずつですか?

4

2 に答える 2

2

WebView 設定を使用してみる

myWebView = (WebView)findViewById(R.id.mywebView);
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("UTF-8");
于 2012-03-09T20:46:38.633 に答える
1

私は以前にこの問題に遭遇しました。WebView にロードする前に、myHtml 文字列が適切にエンコードされていることを確認します。Log.d() を使用してログに記録することで確認できます。その文字列のエンコーディングが間違っていると、WebView でも正しく表示されません。LogCat にこれらの奇妙な文字が表示されます。

その場合は、データを myHtml 文字列に読み込むときに、InputStreamReader などを使用し、文字エンコーディングとして「UTF-8」を渡すことを確認する必要があります。

使用しているコード行を次のように変更します。

BufferedReader buffer = new BufferedReader(new InputStreamReader(content), 1000);

に:

BufferedReader buffer = new BufferedReader(new InputStreamReader(content, "UTF-8"), 1000);

このバージョンのコンストラクターは、次のように文書化されています。

InputStream in で新しい InputStreamReader を構築します。バイトを文字にデコードするために使用される文字コンバーターは、enc によって名前で識別されます。エンコーディングが見つからない場合、UnsupportedEncodingException エラーがスローされます。

http://developer.android.com/reference/java/io/InputStreamReader.htmlで2 番目のものを見てください。

編集:それが機能しない場合は、次を使用してみてください:

String s = EntityUtils.toString(entity, HTTP.UTF_8);

これはAndroid Java UTF-8 HttpClient Problemからのものです

于 2012-03-10T08:27:30.653 に答える