这不会转换为å
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));
}
请注意我从我的网络服务器收到一个字符串作为回复。
答案 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是对的,数据被破坏了:获取或发送(编码错误)。