C#中读取包含umlaut的Json文件

3

我正在尝试在c#中读取包含umlaut的Json文件,以下是文件格式:

{
    "BankCodeOertlich": "59000000",
    "BicOertlich": "",
    "ErgaenzungName": "Außenst. Sulzbach",
    "HauptstelleAussenstellen": "Außenstelle v. Finanzamt Saarbrücken Am"
}

我将使用以下代码来读取C#中的JSON:
```csharp ```
public static List<T> Load<T>(string filePath)
{
    using (var stream = File.OpenRead(filePath))
    {
        var reader = new StreamReader(stream, Encoding.UTF8);
        List<T> data = JsonConvert.DeserializeObject<List<T>>(reader.ReadToEnd());
        return data;
    }
}

我得到了以下输出:
{
    "BankCodeOertlich": "59000000",
    "BicOertlich": "",
    "ErgaenzungName": "Au?enst. Sulzbach",
    "HauptstelleAussenstellen": "Au?enstelle v. Finanzamt Saarbr?cken Am"
}

这只是一个例子,不是实际输出。我试着更改StreamReader的编码方式,但它没有起作用。有没有更好的方法来解决这个问题?


你的JSON文件是否使用Unicode编码保存? - Denys Krasnoshchok
确保数据是真正的Unicode。.NET在内部使用Unicode,流类默认使用UTF8。很可能,数据是ASCII码,并且您的系统区域设置无法处理所有拉丁字符。 - Panagiotis Kanavos
1
你确定这个文件真的是以UTF8编码的吗?尝试使用Encoding.GetEncoding("iso-8859-1") - Erich Kitzmueller
which means then as utf-8 - Thomas
1
@AmanullahTariq 这意味着您没有读取UTF8文件。要么该文件已转换为ASCII,要么您没有使用指定的代码保存它。您是否在文本编辑器中进行了编辑,并将其保存为ASCII格式? - Panagiotis Kanavos
显示剩余5条评论
1个回答

7

该文件未使用UTF8编码,请尝试使用Encoding.GetEncoding("iso-8859-1")。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接