【发布时间】:2018-11-20 18:57:42
【问题描述】:
我已经下载了带有我的对话存档的 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 的吗?我尝试了几种方法,但没有结果。
感谢您的帮助。
【问题讨论】:
-
什么是 encodingIn ?
-
无法使用您提到的编码找到您的拉丁字符 - etutorials.org/Programming/actionscript/…
-
这不是编码,而是 JSON 标准中定义的 Unicode 字符转义:json.org -> stackoverflow.com/a/27516892 以及 tools.ietf.org/html/rfc7159#section-7。该标准规定在
\uXXXX转义序列中,十六进制数字XXXX对应于一个Unicode 代码点。而 U+00C5 确实是 LATIN CAPITAL LETTER A WITH RING ABOVE,因此 JSON 正在被正确解析和解释。因此,JSON 一定是被某种方式破坏了,你能说明你是如何获得它的吗?