我正在制作一个程序,可以从传说api联盟中获取数据,它会分析您当前的游戏并向您显示您的对手名称,排名和内容。但我有一个问题,因为要获得某人的排名我需要前往一个特定的网址,其中包含他的昵称。问题是,有些玩家会将å,à,è,ö等字符放入他们的刻痕中,当发生这种情况时,我的程序就会停止工作。我将向您展示我用来执行此操作的部分代码:
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:服务器返回HTTP响应代码:400为URL:https://euw1.api.riotgames.com/lol/summoner/v3/summoners/by-name/JegFårDetDårligt?api_key=(我的密钥,不能显示它sry)
之前我遇到过空格,因为看起来你甚至不能在网址中放置空格,所以我要解决的问题是:
newPlayerNick[i] = playerNick[i].replaceAll("\\s+","_");
它基本上用_替换每个空格,所以它完美地工作,但我不能用正常的“a”替换“å”,因为它们是不同的字符。
那么,你知道任何解决方案吗?非常感谢你们。
答案 0 :(得分:2)
您可以尝试使用特殊字符的URL编码:
URLEncoder.encode("This string has å à è ö and spaces","UTF-8")
输出如下:
This+string+has+%C3%A5+%C3%A0+%C3%A8+%C3%B6+and+spaces
您可以尝试使用此网址查看是否有效:
https://www.google.com.hk/search?q=This+string+has+%C3%A5+%C3%A0+%C3%A8+%C3%B6+and+spaces
您可以看到它是一个谷歌链接,并传递关键字