URL java中的特殊字符无法正常工作

时间:2017-12-26 03:45:36

标签: java url special-characters encode http-status-code-400

我正在制作一个程序,可以从传说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”替换“å”,因为它们是不同的字符。

那么,你知道任何解决方案吗?非常感谢你们。

1 个答案:

答案 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

您可以看到它是一个谷歌链接,并传递关键字