【发布时间】: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?