c#将文件读入字节数组与字符串不同

我在Visual Studio中有一个文件,内容如下:“{”Name“:”Pete“}” 如果我用下面的代码读取文件,它看起来会创建一个具有原始值的字符串:

byte[] byteArray = System.IO.File.ReadAllBytes(filePath);
string jsonResponse = System.Text.Encoding.UTF8.GetString(byteArray);
但是,如果使用以下代码,字符串实际上与存在的版本不同:
string jsonResponse = "{\"Name\":\"Pete\"}";
为什么? (我认为它不同的原因是因为当我将每个版本传递给json解串器时,它的行为有所不同) 谢谢。
已邀请:

ket

赞同来自:

鉴于你在问题中的最终评论,我怀疑问题是你在文件的开头有一个byte-order mark。尝试加载这样的文件:

string jsonResponse = File.ReadAllText(filePath);
我相信会为你剥离BOM。或者,您可以尝试自己明确修剪它:
jsonResponse = jsonResponse.TrimStart('\feff');

iut

赞同来自:

我的猜测是你的文件中有一个终止换行符。 通过将它们与a == b进行比较,您可以轻松验证两个字符串在C#中是否具有相同的内容。 这是一个简短的代码示例,可以帮助您确定问题。字符串输出由< >包围,这可以帮助您识别周围的空白(顺便说一下,可以使用String.Trim删除)。

byte[] byteArray = System.IO.File.ReadAllBytes(filePath);
string fromFile = System.Text.Encoding.UTF8.GetString(byteArray);
string fromString = "{\"Name\":\"Pete\"}";
if (fromFile == fromString) {
    Console.WriteLine("Strings are the same.");
} else {
    Console.WriteLine("Strings are different!");
    Console.WriteLine("fromFile:   <" + fromFile + ">");
    Console.WriteLine("fromString: <" + fromString + ">");
}

要回复问题请先登录注册