转换为国际字符不适用于jsonobject.tostring,但适用于字符串文字?

时间:2013-03-04 14:04:01

标签: java android json

这不会转换为å

String j_post = new String((byte[]) j_posts.getJSONObject(i).get("tagline").toString().getBytes("utf-8"), "utf-8");

但以下是

String j_post = new String((byte[]) "\u00e5".getBytes("utf-8"), "utf-8");

我该如何解决这个问题?

更新:现在我尝试在将其转换为JSONObject之前修复编码,但它仍然无效。

json = new JSONObject(new String((byte[]) jsonContent.getBytes("utf-8"), "utf-8"));

    JSONArray j_posts = json.getJSONArray("posts");
    for (int i = 0; i<j_posts.length();i++){
        //[String(byte[] data)][2]
        String j_post =j_posts.getJSONObject(i).get("tagline").toString();
        post_data.add(new Post(j_post));
    }

请注意我从我的网络服务器收到一个字符串作为回复。

2 个答案:

答案 0 :(得分:1)

这是因为您的JSON没有所需格式的字符。查看编写JSON的代码,并在JSON形成时包含UTF-8编码。

答案 1 :(得分:0)

String j_post = new String((byte[]) "\u00e5".getBytes("utf-8"), "utf-8");
确实是(更好):

String j_post = "\u00e5";

因此

String j_post = new String((byte[]) j_posts.getJSONObject(i).get("tagline")
        .toString().getBytes("utf-8"), "utf-8");

String j_post = j_posts.getJSONObject(i).get("tagline").toString();

所以@RJ是对的,数据被破坏了:获取或发送(编码错误)。