2017-12-26 35 views
0

전설 API의 리그에서 데이터를 가져 오는 프로그램을 만들고 있습니다. 현재 게임을 분석하고 사용자의 이름, 순위 및 물건을 보여줍니다. 그러나 누군가의 계급을 얻으려면 나는 그의 닉이있는 특정 URL로 여행해야하기 때문에 문제가 있습니다. 문제는 일부 플레이어가 å, à, è, ö 또는 그와 같은 문자를 닉에 넣었으며 그 때 내 프로그램이 작동하지 않는 것입니다. 때 java.io.IOException : : 이것은 발생 오류가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"))); 

: 난 당신이 그렇게 사용하는 메신저 코드의 일부를 보여줍니다 서버가 반환 HTTP 응답 코드 : URL 400 : https://euw1.api.riotgames.com/lol/summoner/v3/summoners/by-name/JegFårDetDårligt?api_key= (내 키를 당신은 심지어 URL에 띄어쓰기를하지 못할 것처럼 보이기 때문에, 그것은 공백 전에 나에게 무슨 일이 있었

)는 SRY 보여 질수 그래서 내가했던 것은 그였다 해결 :

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

을 그 기본적으로 모든 공간을 _으로 대체하므로 완벽하게 작동합니다. y를하지만, 나는 다른 문자가 있기 때문에 "å"을 정상 "a"로 대체 할 수 없습니다.

그래서이 문제에 대한 해결책을 알고 계십니까? 너무 많은 사람들에게 감사드립니다.

+0

URL은 ASCII 하위 집합의 문자를 포함 할 수 있습니다. URL의 비 ASCII 문자는 비표준 문자입니다. 일부 웹 서버는 우연히이를 지원할 수도 있습니다 (Github은 때때로 URL, IIRC에 표식 체크 표시를 던지기도합니다). 일부 웹 클라이언트는 허용하지만 비표준입니다. [관련] (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

Ohhh man thats 내가 찾고있는 것, 당신은 최고입니다! !!! – JAram

+0

도와 드리겠습니다. :) –