gpt4 book ai didi

java - Java 中的 ISO-8859-1 到 UTF-8 (runescape API)

转载 作者:行者123 更新时间:2023-12-02 02:14:29 37 4
gpt4 key购买 nike

我正在尝试制作一个 Discord 机器人,它从 Runescape API 获取信息并返回有关用户的信息。我遇到的问题是当用户名包含空格时。

runescape api 提供了一个 ISO-8859-1 格式的文件,我尝试将其转换为 UTF-8

文件中的 2 个示例:lil Jimmy 和 lil jessica。该循环找到了杰西卡的匹配项,但没有找到吉米的匹配项。

获取和读取文件的代码:

    InputStream input = null;
InputStreamReader inputReader = null;
BufferedReader reader = null;

URL url = new URL("http://services.runescape.com/m=clan-hiscores/members_lite.ws?clanName=uh");
input = url.openConnection().getInputStream();
inputReader = new InputStreamReader(input, "ISO-8859-1");
reader = new BufferedReader(inputReader);
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
parts[0] = new String(parts[0].getBytes("UTF-8"), "ISO-8859-1");

if (parts[0].equals("lil Jimmy")) {System.out.println("lil Jimmy found");}
if (parts[0].equals("lil jessica")) {System.out.println("lil jessica found");}

有人知道我做错了什么吗?预先感谢您抽出时间提供帮助!

编辑1:我已按照答案将“ISO-8859-1”添加到 inputReader 中。现在,下一步是将非换行空白替换为常规空白。

编辑2:不间断的空白可以通过以下方式解决:

       parts[0] = parts[0].replaceAll("\u00a0","aaaaaaaaa");
parts[0] = parts[0].replaceAll("\u00C2","bbbbbbbbb");
parts[0] = parts[0].replaceAll("bbbbbbbbbaaaaaaaaa", " ");

aaaaaa 替换了常规空格中的不间断空格,并且 aaaaa 删除了它放置在空白前面的罗马 a (Â)。

感谢大家对我的帮助!

最佳答案

如果您想确保正确读取数据,请使用:

inputReader = InputStreamReader(input, "ISO-8859-1");

之后,我不确定您为什么要尝试转换为 UTF-8,因为从那时起您只是将文本用作 String 。字符串本身没有编码。 (嗯,从某种意义上说,Java 字符串的内部表示形式就像 UTF-16,但这是您无需担心的另一堆蠕虫。)

关于java - Java 中的 ISO-8859-1 到 UTF-8 (runescape API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49496644/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com