アンドロイド: URIオブジェクトにスペースをHOWTOパースURL文字列?

? Mannaz @ | Original: StackOverFlow
---

私は、スペースを含むURLを表す文字列を持っているし、 URIオブジェクトに変換したい。行う簡単な試みである場合

String myString = "http://myhost.com/media/mp3s/9/Agenda of swine - 13. Persecution Ascension_ leave nothing standing.mp3";
URI myUri = new URI(myString);

it gives me

java.net.URISyntaxException: Illegal character in path at index X

どこにインデックスが「 ____ 」のURL文字列の最初のスペースの位置である。

どのように私は「 ____ 」オブジェクトに「 ____ 」解析することができますか?

---

Top 5 答え

1Bozho @
X

これは、文字列をhttp://www.w3schools.com/TAGS/ref_urlencode.aspます。

「 ____ 」の最後のスラッシュの後の部分である - あなたのケースで、曲の名前、それはそうように。

2BalusC @

あなたが実際にhttp://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html http://en.wikipedia.org/wiki/Percent-encodingする必要があります。文字列は、実際に完全なURLが含まれているので、それはそれ適切にURLエンコードするのは難しい。あなたがスラッシュかわからない「 ____ 」アカウントとどのしないに入れなければならない。あなたは、事前に「 ____ 「生でそれを予測することはできません。問題は、実際に、より高いレベルで解決する必要がある。 「 ____ 」とはどこから来るのでしょうか?それはハードコードされて?それからちょうどそれに応じてそれを自分で変更します。それはユーザーの入力として付属していますか?ユーザーが自分自身を解決しましょう​​、それを検証し、エラーが表示されます。

:どのような方法では、あなたは、charバイchar型に交換し、「 ____ 」 、あなたはまた、単に行うことができますが、それは、URLのそれが無効になる唯一のスペースがあることを確認できる場合

myString

または文字列ごとの文字列は「 ____ 」と交換してください:

URI

あなたはそれが必要な最後のスラッシュがエンコードされるべき後に一部だけだということを保証できるかどうか、あなたはまた、単に行うことができます:

java.net.URLEncoder.encode(finalPartOfString, "utf-8");
3Phileo99 @

スペース、 @ 、およびURLパス内の任意の場所にある他の安全でない文字を処理するには、使用Uri.Builderは、URLのローカル·インスタンスとの組み合わせで、私はhttp://stackoverflow.com/a/22059606/923920説明したように:

finalPartOfString
4siddmuk2005 @
URLEncode