17

XML解析を使用して画像を表示するためにグリッドビューを使用していますが、次のような例外があります

java.lang.IllegalArgumentException: インデックス 80 のパスに不正な文字があります: http://www.theblacksheeponline.com/party_img/thumbspps/912big_361999096_Flicking Off Douchebag.jpg

この問題を解決するには?あらゆる種類の URL を表示したいのですが、サンプル コードを教えてください。

皆さんありがとう

4

8 に答える 8

29

URL エンコーディングは、Android でも Java SE と同じ方法で行われます。

try {
    String url = "http://www.example.com/?id=123&art=abc";
    String encodedurl = URLEncoder.encode(url,"UTF-8");
    Log.d("TEST", encodedurl);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
} 
于 2010-09-17T11:30:39.460 に答える
6

ベンがコメントで述べているように、URLEncoder.encodeを完全なURLに使用しないでください。これは、 W3Cから次の例に従ってURLのセマンティクスを変更するためです。

URI http://www.w3.org/albert/bertram/marie-claudehttp://www.w3.org/albert/bertram%2Fmarie-claude は、2番目の場合のように、エンコードされたスラッシュが同一ではありません。階層的な意味はありません。

代わりに、 RFC 3986セクション2.4の以下に従って、URLのコンポーネント部分を個別にエンコードする必要があります。

通常の状況では、URI内のオクテットがパーセントエンコードされるのは、そのコンポーネントパーツからURIを生成するプロセス中のみです。これは、実装によって、予約された文字のどれがサブコンポーネントの区切り文字として使用され、どれがデータとして安全に使用できるかを決定する場合です。生成されると、URIは常にパーセントエンコードされた形式になります。

したがって、要するに、あなたの場合、ファイル名をエンコード/エスケープしてから、URLをアセンブルする必要があります。

于 2011-03-08T22:26:28.610 に答える
4

URL全体をエンコードするのではなく、「信頼できないソース」からの部分のみをエンコードします.

String query = URLEncoder.encode("Hare Krishna ", "utf-8");
String url = "http://stackoverflow.com/search?q=" + query;
于 2015-12-25T06:15:14.623 に答える
1

以下の方法を使用できます

public String parseURL(String url, Map<String, String> params)
{
    Builder builder = Uri.parse(url).buildUpon();
    for (String key : params.keySet())
    {
        builder.appendQueryParameter(key, params.get(key));
    }
    return builder.build().toString();
}
于 2016-06-18T06:30:51.373 に答える
1

URLEncoder はクエリのエンコードにのみ使用し、代わりにjava.net.URIクラスを使用してください。

URI uri = 新しい URI(
    "http"、
    "www.theblacksheeponline.com",
    "/party_img/thumbspps/912big_361999096_Flicking Off Douchebag.jpg",
    ヌル);
文字列リクエスト = uri.toASCIIString();
于 2012-04-07T18:50:50.967 に答える
0

私は最近、この目的のために簡単な URI エンコーダーを書きました。Unicode 文字も処理します。 http://www.dmurph.com/2011/01/java-uri-encoder/

于 2011-08-04T18:03:23.287 に答える