com.google.code.gson无法解析tamil结果



因此,我正在尝试从https://api-thirukkural.vercel.app/api?num=1139使用Java Telegram Bot Api并将其发送到Telegram。我使用com.google.code.gson依赖项来解析JSON。

API的预期结果:

{"number":1139,"sect_tam":"காமத்துப்பால்","chapgrp_tam":"களவியல்","chap_tam":"நாணுத் துறவுரைத்தல்","line1":"அறிகிலார் எல்லாரும் என்றேஎன் காமம்","line2":"மறுகின் மறுகும் மருண்டு.","tam_exp":"என்னைத் தவிர யாரும் அறியவில்லை என்பதற்காக என் காதல் தெருவில் பரவி மயங்கித் திரிகின்றது போலும்!","sect_eng":"爱","chapgrp_eng":"婚前之爱","chap_eng":"爱的卓越宣言","eng":"我困惑的爱在公共街道上游荡,相信没有人知道它的秘密","eng_exp":"因此,在公共场合,不安会游荡"}

这是我的一段java代码:

String results = "";
Random random = new Random();
SendMessage message = new SendMessage();
String apiUrl = "https://api-thirukkural.vercel.app/api?num=" + random.nextInt(1329 + 1);
try {
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
Scanner sc = new Scanner(url.openStream());
while (sc.hasNext()) {
results += sc.nextLine();
}
sc.close();
JSONArray jsonArray = new JSONArray("[" + results + "]");
JSONObject object = jsonArray.getJSONObject(0);
message.setChatId(update.getMessage().getChatId().toString());
message.setText("Number: " + object.getInt("number") + "nn" + object.getString("line1") + "n"
+ object.getString("line2") + "nn" + object.getString("tam_exp") + "nn" + object.getString("eng_exp"));
conn.disconnect();
execute(message);
} catch (Exception e) {
e.printStackTrace();
}

电报中的结果:

编号:1139��平方英寸�GE®®���••••¾�R®��R®�EMC®•�GE®®�®®�R®�辉瑞®�.���GE®®����R®�R®•R®¾®�†®†®�微米�™����中国�GE®®�!因此,在公开的方式中,扰动将漫游

这是gson依赖性的问题吗?有人能帮我修一下吗?谢谢

您需要在Scanner上指定字符集。这可能就是问题所在。

示例:

new Scanner(url.openStream(), StandardCharsets.UTF_8.name());

你应该使用合适的Charset。

最新更新