读文件到字节数组不同于字符串

| 我在Visual Studio中有一个文件,其内容如下:\“ {\”名称\“:\” Pete \“} \” 如果我使用以下代码读取文件,它似乎会创建一个具有原始值的字符串:
byte[] byteArray = System.IO.File.ReadAllBytes(filePath);
string jsonResponse = System.Text.Encoding.UTF8.GetString(byteArray);
但是,如果我使用以下代码,则该字符串实际上不同于存在的版本:
string jsonResponse = \"{\\\"Name\\\":\\\"Pete\\\"}\";
为什么? (我认为这是不同的原因是因为当我将每个版本传递给json解串器时,其行为都不同) 谢谢。
已邀请:
考虑到您对问题的最后评论,我怀疑问题是您在文件的开头有一个字节顺序标记。尝试像这样加载文件:
string jsonResponse = File.ReadAllText(filePath);
我相信这将为您剥离BOM。或者,您可以尝试自己明确修整它:
jsonResponse = jsonResponse.TrimStart(\'\\feff\');
我的猜测是文件中有换行符。 您只需将它们与
a == b
进行比较,即可轻松验证两个字符串在C#中的内容是否相同。 这是一个简短的代码示例,可以帮助您识别问题。字符串输出用ѭ5括起来,这将帮助您识别周围的空格(顺便说一下,可以使用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 + \">\");
}

要回复问题请先登录注册