【发布时间】:2015-08-06 13:47:07
【问题描述】:
大家好。我正在尝试接收一些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 字符串编码,但没有任何帮助。他们都给了我相同的价值。所以我的问题是,这是我的问题还是服务器部分已经向我发送了编码字符串?还是应该对特定语言的字符串进行编码?
【问题讨论】:
-
您看到的是 unicode 字符。您需要将 logcat 编码设置为 utf-8。
-
如果不是这种情况,那么您需要在服务器端处理此问题。将您的脚本文件保存为 Utf-8 编码,还有一个我使用的代码(我现在不记得了)。如果找到,将尝试在此处查找并发布。
-
在这里你可以使用这个函数
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);你也可能需要将你的脚本文件保存为 UTF-8 编码! `