C# Json文件中的Unicode问题

C# Json文件中的Unicode问题,c#,json,encoding,C#,Json,Encoding,我已经在facebook上下载了我的数据,并用它做了一些统计。 不幸的是,有些字符不能正确显示,例如“é”变成了“Ô)。 从Json的角度来看,我有以下几点: 我的C语言代码非常简单 private static ListMessages ReadJSON(string path) { using (StreamReader r = new StreamReader(path, Encoding.GetEncoding("utf-8"))) {

我已经在facebook上下载了我的数据,并用它做了一些统计。 不幸的是,有些字符不能正确显示,例如“é”变成了“Ô)。

从Json的角度来看,我有以下几点:

我的C语言代码非常简单

 private static ListMessages ReadJSON(string path)
    {
        using (StreamReader r = new StreamReader(path, Encoding.GetEncoding("utf-8")))
        {
            string json = r.ReadToEnd();
            ListMessages messages = JsonConvert.DeserializeObject<ListMessages>(json);
            return messages;
        }

    }
private static ListMessages ReadJSON(字符串路径)
{
使用(StreamReader r=newstreamreader(路径,Encoding.GetEncoding(“utf-8”))
{
字符串json=r.ReadToEnd();
ListMessages=JsonConvert.DeserializeObject(json);
返回消息;
}
}

我觉得我遗漏了一些简单的东西,但我想不出是什么,所以我希望有人能在这个问题上帮助或指导我。

NET中的字符串是Unicode,特别是UTF16。UTF8与Unicode不同,它只是Unicode编码之一。如果您有这样的问题,可能是因为加载文件时使用了错误的编码。顺便说一句,StreamReader使用UTF8并尝试从BOM中检测编码。完全删除
Encoding.GetEncoding(“utf-8”)
。您还有问题吗?最后,
\u009f
等不是Unicode字符。它们是逃逸序列。作为一个Unicode字符处理的6个单独字符。与将
\n
视为新行的方式相同,这些转义序列与法语字符不对应。你甚至不需要转义序列来打字。所以在.NET上运行,这就是为什么我可以简单地键入字符而无需转义。è的Unicode转义序列是
00E8
。这个文件来自哪里?您可能应该让创建它的人创建一个真正的UTF8文件。这看起来像是试图创建一个7位ANSI文件,其中所有非ANSI字符都被转义序列替换。