java - URL java 中的特殊字符不起作用

标签 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= (我的 key ,抱歉,无法显示)

我以前就遇到过空格问题,因为看起来你甚至不能在网址中添加空格,所以我解决这个问题的方法是:

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

这基本上用 _ 替换每个空格,所以它工作得很好,但我不能用普通的“a”替换“å”,因为它们是不同的字符。

那么,你知道有什么解决办法吗?非常感谢你们。

最佳答案

您可以尝试对特殊字符进行 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

可以看到这是一个google链接,并且传递了关键字

关于java - URL java 中的特殊字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47973688/

相关文章:

Python 将特殊字符记录到文件会抛出异常

java - 如何通过用户单击 Android 浏览器中的元素来保存 HTML 页面的一部分

Java 在初始化之前引用最终变量

php - preg_replace() 会改变我的字符集吗?

Java - 从另一个类输入字符串时出现 MalformedURLException,但在粘贴相同的字符串时不会出现异常

c - 在C glib中解析url查询参数?

php - 我的表单中的 ® 字符未正确处理

JavaMail - 无法folder.open()

java - 使用 jdbc 驱动程序将 java 连接到 SQL Server

iOS App Store URL - 评分按钮 - iOS