我需要从同一个流中读取两次。问题是我第二次得到一个不同的字符串。 这是缩短的代码:
using(StreamReader sr = new StreamReader(filePath))
{
string string1 = sr.ReadToEnd();
sr.BaseStream.Position = 0;
sr.DiscardBufferedData();
string string2 = sr.ReadToEnd();
bool sameSame = string1 == string2; // false!
}
字符串看起来相同,但使用十六进制编辑器检查我可以看到值不同。造成这种情况的原因是什么?如何绕过它?
更新
字符串1
字符串2
由于某种原因,string1有一个' - '。
答案 0 :(得分:1)
这是字节顺序标记的问题,一个肮脏的解决方法是跳过前三个字节:
sr.BaseStream.Position = 3;
但正确的方法是创建一个新的StreamReader。