【问题标题】:Getting strange characters from a JSON response from Facebook从 Facebook 的 JSON 响应中获取奇怪的字符
【发布时间】:2010-10-19 23:35:23
【问题描述】:

我想显示 JSON 响应时遇到了麻烦。我正确地提取了字符串,但是当有像'á'或'¿'这样的字符而不是这些字符时出现'Ãi'或'¿'。我认为响应来自非 UTF8 编码,但我找不到如何转换它。


编辑:我正在尝试对此 URL 发出 GET 请求:https://graph.facebook.com/me 以检索传递访问令牌的个人资料信息。

HttpGet get = new HttpGet(url);
response = client.execute(get);

为了提取响应,我这样做:

JSONObject json_object;
response.getEntity().writeTo(ostream);
json_object = new JSONObject(ostream.toString());
String name = json_object.getString("name");
Log.d("NAME",name);

请注意,我正在使用 Android SDK 进行编程。


谢谢。

【问题讨论】:

  • 你能给我你提出的请求的网址吗?
  • 你能说明你是如何提取响应的吗?
  • 我已经更新了问题,谢谢。

标签: java android json facebook encoding


【解决方案1】:

您可以使用 导入org.apache.commons.lang.StringEscapeUtils,如果没有请下载。

例如

您可以通过StringEscapeUtils strutil = new StringEscapeUtils();使用它 然后 title= strutil.escapeHtml(title);

title    = title.replaceAll("\"", "''");
        desc_val = desc_val.replaceAll("\"","''");

        title = strutil.escapeHtml(title);
        desc_val = strutil.escapeHtml(desc_val);
        url_val = strutil.escapeHtml(url_val);

并尝试将其转换为 HTMl 形式,使用 Html.fromHtml(title);

希望对你有帮助。

【讨论】:

  • 我试过了,但是当我收到这个字符串:“¿Tienes hambre?”时,如果我没有使用 escapeHtml 方法,我会得到相同的字符串:“¿Tienes hambre?” . Html.fromHtml 方法我觉得对我没用,因为我只想得到正确的字符串编码。
  • 好的,这样做会转换 HTML 代码中的奇怪字符,但我读过 Spanned 类(escapeHtml 返回该类的对象)它用于表示文本视图中的样式文本,但我想要以正确的编码存储字符串。那可能吗?如果没有,我想我可以存储一个 Spannable 对象。谢谢
  • 我听不懂,你在问什么?让我稍微解释一下。
  • 我想以正确的编码存储字符串,我的意思是,如果响应是 ¿Tienes hambre?我想存储在 String 对象中 ¿Tienes hambre?。如果我使用 escapeHtml 方法,我会得到 ¿Tienes hambre?。 fromHtml 方法返回一个 Spannable 对象,但我想将字符串存储在 String 对象中,而 Spannable 对象的 toString 方法不适合。正如我所说,如果无法将其转换为 String 对象,我会将其存储为 Spannable 对象。
  • 好吧,我发现在对 String 和 text=Html.fromHtml 执行 escapeHtml 后,当我在 TextView 中显示 String 时:“holder.text.setText(text,BufferType.SPANNABLE );"正确显示。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
相关资源
最近更新 更多