2012-03-18 4 views
0

두 번 같은 스트림에서 읽어야합니다. 문제는 두 번째로 다른 문자열을 얻는 것입니다.StreamReader.ReadToEnd 두 번째로 다르게 읽음

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! 
} 

문자열이 동일하지만 값이 다른 것을 알 수 헥스 편집기 체크 모양 : 여기 단축 코드이다. 이 문제의 원인은 무엇이며 어떻게 해결할 수 있습니까? '-'

UPDATE 어떤 이유로 문자열 1의 경우

문자열 1

string1

문자열 2

string2

가 있습니다.

sr.BaseStream.Position = 3; 

그러나 적절한 방법은 새에서는 StreamReader를 만드는 것입니다 :

+1

"16 진수 편집기로 확인 하시겠습니까?" –

+0

어떤 차이가 있습니까? 길이? 내용? – Steve

+0

http://www.edithex.com/에서 string1과 string2를 비교했습니다. 문자가 다른 16 진수 값을 생성했습니다. – Malako

답변

1

그것은 바이트 순서 표시에 문제가있어, 더러운 해결 방법은 처음 세 바이트를 건너 뛸 것입니다.

+0

IMHO 바이트 순서 표시는 다른 인코딩에서 다른 길이를 가질 수 있습니다. 또한 2 바이트 길이라고 생각합니까? – usr

+0

인코딩에 따라 다릅니다. http://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding – Will

+0

글쎄, 그래서 그것을 '더러운'이라고 불렀습니다. 잘만되면, Malako는 두 번째 옵션을 선택했습니다. – user1096188

관련 문제