“EF BB BF”在Visual Studio中创建的JSON文件的开头

我在我的一个项目中将一堆JSON文件设置为Embedded resource 。 我正在使用Newtonsoft.Json来解析这些文件:

 public static string ReadStringFromStream(string streamName) { using (System.IO.Stream stream = new EmbeddedResourceReader().GetType().Assembly.GetManifestResourceStream(streamName)) { byte[] result = new byte[stream.Length]; stream.Read(result, 0, (int)stream.Length); var str = Encoding.UTF8.GetString(result); return str; } } ... var traits = JsonConvert.DeserializeObject(EmbeddedResourceReader.ReadStringFromStream("LNTCore.Genres.json")); Genres = traits; 

这会在Newtonsoft.Json中引发exception,因为它无法解析文件的开头。 在这种情况下,最佳做法是什么? 我应该如何处理这种情况?

谢谢!

这是一个字节顺序标记(BOM)。

我假设您的第一个代码块显示了如何获取文件。 如果您想要没有BOM的UTF-8文件,可以使用UTF8Encoding构造函数构建没有BOM的编码实例:

 var str = new UTF8Encoding(false).GetString(result); 

更改文件的编码 – 保存时有一个向下箭头,可让您转到高级保存选项,包括编码。

你看到的是BOM (字节顺序标记) – 它表明这是一个Unicode文件(在这种情况下,UTF-8,我相信)。

你也可以剥离它,它应该让它解析没有问题。

这是保存文件时最好只处理一次,而不是重复修复代码。