接收外语Json(例如俄语)Android

时间:2015-05-25 06:15:27

标签: android json parsing

美好的一天。我试图收到一些用俄语写的JSON,也可能用中文接收,主要是说全世界都说。所以我必须在JSON收到任何语言字母。

问题是当我收到JSON时应该是

{
    "file_path":"storage\/paqstorage/paq/1278/1432230404Lighthouse - копия-копия-копия.jpg",
    "file_id":"376"
}

但是当我解析字符串时,它看起来像

{
    "file_path":"storage\/paq\/1278\/1432230404Lighthouse - \u043a\u043e\u043f\u0438\u044f.jpg",
    "file_id":"376"
}

我使用以下代码来解析JSON数据

JSONArray array = object.getJSONArray("files");
for (int i = 0; i < array.length(); i++) {
    JSONObject o = array.getJSONObject(i);
    stringArrayList.add(o.getString("file_path"));
}

我尝试了UTF8ISO字符串编码,但没有任何帮助。他们都给了我相同的价值。所以我的问题是,是我的问题还是应该服务器部分已经发送给我编码的字符串?或者我应该编码特定语言的字符串?

1 个答案:

答案 0 :(得分:0)

这种问题可能有两种情况。
1.您的服务器端脚本文件以Unicode编码返回数据。
2.只有Logcat以Unicode编码呈现。

对于1,您需要在脚本文件中编写一个小函数+将文件另存为UTF-8 encoding。请注意以下代码仅适用于PHP。

function replace_unicode_escape_sequence($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');

然后将其称为

preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $json);