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

问题描述 投票:0回答:1

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

所以,你知道任何解决方案吗?十分感谢大家。

java url special-characters encode http-status-code-400
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.