2017-12-26 20 views
0

私は凡例APIのリーグからデータを取得するプログラムを作成しています。これはあなたの現在のゲームを分析し、あなたの名前、ランク、物を表示します。しかし、私は問題を抱えています。なぜなら、誰かの階級を取得するためには、彼のニックで特定のURLに移動する必要があるからです。問題は、一部のプレイヤーがå、à、è、ö、またはそのような文字を自分の刻み目に入れてしまい、そのときにプログラムが機能しなくなることです。私はあなたにそれを行うために使用してイムコードの一部が表示されます:URL javaの特殊文字は動作しません

getSummonerID2 = new JSONObject(IOUtils.toString(newURL("https://euw1.api.riotgames.com/lol/summoner/v3/summoners/by-name/"+ newPlayerNick[i] + "?api_key=" + APIKEY), Charset.forName("UTF-8"))); 

は、これはスローエラーです: にjava.io.IOException:URLの400:https://euw1.api.riotgames.com/lol/summoner/v3/summoners/by-name/JegFårDetDårligt?api_key=(私のキーサーバーは、HTTPレスポンスコードを返し、)それはSRY

を示しカントそれはあなたもURLにスペースを入れて傾けるように見えるので、スペースを前に、私に起こったので、私はそれがだった解決するためにやった事:

newPlayerNick[i] = playerNick[i].replaceAll("\\s+","_"); 

こと基本的にすべてのスペースを_で置き換えるので、完璧に動作しますyは、しかし、私は "å"を通常の "a"に置き換えることはできません。

だから、これはどのような解決策がありますか?大変ありがとうございました。

+0

URLには、ASCIIのサブセットから文字を含むことができます。 URL内のASCII以外の文字はすべて標準ではありません。いくつかのWebサーバは偶然それをサポートしているかもしれません(私はGithubがURL、IIRCに時折迷惑なチェックマークを投げると信じています)、そしていくつかのWebクライアントはそれを許可するかもしれませんが、それは非標準です。 [関連](https://stackoverflow.com/questions/6871404/can-a-path-in-a-uri-contain-unicode) –

+0

そのために_URLEncoder_または_URLDecoder_を試しましたか? [ここをクリック](https://dzone.com/articles/url-encoding-and-decoding-using-java)あなたは良い例を見ることができます – jfun

答えて

2

あなたは、特殊文字のURLエンコードを試すことができます。

URLEncoder.encode("This string has å à è ö and spaces","UTF-8") 

出力は似ている:

This+string+has+%C3%A5+%C3%A0+%C3%A8+%C3%B6+and+spaces 

あなたはそれが動作するかどうかを確認するには、このURLを試すことができます。

https://www.google.com.hk/search?q=This+string+has+%C3%A5+%C3%A0+%C3%A8+%C3%B6+and+spaces

Googleのリンクで、キーワードが渡されていることがわかります

+0

オハイオ男thats私が探していたもの、あなたは最高ですありがとう! !!! – JAram

+0

喜んで助けてください。 :) –

関連する問題