【问题标题】:Read Json file containing umlaut in c#在c#中读取包含变音符号的Json文件
【发布时间】:2015-11-11 20:35:02
【问题描述】:

我正在尝试在c#中读取包含变音符号的Json文件,文件格式如下:

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

我正在使用以下代码读取 c# 中的 json:

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 编码保存?
  • 确保数据是真的 Unicode。 .NET 在内部使用 Unicode,流类默认使用 UTF8。很可能,数据是 ASCII 并且您系统的语言环境无法处理所有拉丁字符
  • 你确定文件真的是 UTF8 编码的吗?改用Encoding.GetEncoding("iso-8859-1")
  • 我尝试了默认和 ASCII 但它仍然显示相同.. @kraden:我在保存文件时没有指定编码
  • @AmanullahTariq 这意味着您没有读取 UTF8 文件。文件被转换为 ASCII 或者您没有使用您指定的代码来保存它。您是否在文本编辑器中对其进行了编辑,将其保存为 ASCII?

标签: c# json json.net


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-14
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多