【问题标题】:Receive Json In Foreign Language(For Example Russian) Android接收外语 Json(例如俄语)Android
【发布时间】: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"));
}

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

【问题讨论】:

  • 您看到的是 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 编码! `

标签: android json parsing


【解决方案1】:

此类问题可能有两种情况。
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);

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多