gpt4 book ai didi

android - String转Android JSONObject丢失utf-8

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:31 40 4
gpt4 key购买 nike

我正在尝试从 URL 获取(JSON 格式的)字符串并将其作为 Json 对象使用。当我将字符串转换为 JSONObject 时,我丢失了 UTF-8 编码。

这是我用来连接到 url 并获取字符串的函数:

private static String getUrlContents(String theUrl) {
StringBuilder content = new StringBuilder();
try {
URL url = new URL(theUrl);
URLConnection urlConnection = url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

String line;
while ((line = bufferedReader.readLine()) != null) {
content.append(line + "\n");
}
bufferedReader.close();
} catch(Exception e) {
e.printStackTrace();
}

return content.toString();
}

当我从服务器获取数据时,以下代码显示正确的字符:

String output = getUrlContents(url);
Log.i("message1", output);

但是当我将输出字符串转换为 JSONObject 时,波斯字符变成了这样的问号 ??????。 (messages是JSON中的数组名)

JSONObject reader = new JSONObject(output);
String messages = new String(reader.getString("messages").getBytes("ISO-8859-1"), "UTF-8");
Log.i("message2", messages);

最佳答案

您告诉 Java 使用 ISO-8859-1 将字符串(带有键 message)转换为字节,而不是从这些字节创建一个新的字符串,解释为 UTF-8。

new String(reader.getString("messages").getBytes("ISO-8859-1"), "UTF-8");

你可以简单地使用:

String messages = reader.getString("messages");

关于android - String转Android JSONObject丢失utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34687466/

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