美好的一天。我试图收到一些用俄语写的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"));
}
我尝试了UTF8
和ISO
字符串编码,但没有任何帮助。他们都给了我相同的价值。所以我的问题是,是我的问题还是应该服务器部分已经发送给我编码的字符串?或者我应该编码特定语言的字符串?
答案 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);