首页 > 解决方案 > Facebook json 消息的编码/解码问题。C# 解析

问题描述

我已经用我的对话档案下载了 json。我坚持使用奇怪的编码。

json 示例:

{
  "sender_name": "Micha\u00c5\u0082",
  "timestamp": 1411741499,
  "content": "b\u00c4\u0099d\u00c4\u0099",
  "type": "Generic"
},

它应该是这样的:

{
  "sender_name": "Michał",
  "timestamp": 1411741499,
  "content": "będę",
  "type": "Generic"
},

我正在尝试像这样反序列化它:

var result = File.ReadAllText(jsonPath, encodingIn);
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
var conversation = serializer.Deserialize<Conversation>(System.Net.WebUtility.HtmlDecode(result));

不幸的是,输出是这样的:

{
  "sender_name": "MichaÅ\u0082",
  "timestamp": 1411741499,
  "content": "bÄ\u0099dÄ\u0099",
  "type": "Generic"
},

有人知道 Facebook 如何编码 json 吗?我尝试了几种方法,但没有结果。

谢谢你的帮助。

标签: c#jsonfacebookencoding

解决方案


这是答案:

private string DecodeString(string text)
{
    Encoding targetEncoding = Encoding.GetEncoding("ISO-8859-1");
    var unescapeText = System.Text.RegularExpressions.Regex.Unescape(text);
    return Encoding.UTF8.GetString(targetEncoding.GetBytes(unescapeText));
}

我已经收集了所有答案,将它们混合在一起,我们就在这里。谢谢你。


推荐阅读