2014-12-08 2 views
1

StreamReader로 파일을 읽고 StreamWriter로 다른 파일에 정확한 줄을 쓰고 있습니다. 그러나 문제는 결과 파일에서 '|'문자가 '?'로 변환된다는 것입니다.Streamreader로 입력하면 StreamWriter에서 동일한 출력이 제공되지 않습니다.

using (var readFile = new FileStream(path, FileMode.Open, FileAccess.Read)) 
{ 
    using (var writeFile = new FileStream(@"Modified\" + Path.GetFileName(path), FileMode.Create, FileAccess.Write)) 
    { 
     using (var sr = new StreamReader(readFile, new ASCIIEncoding())) 
     { 
      using (var sw = new StreamWriter(writeFile, new ASCIIEncoding())) 
      { 
       //Read line and write it to the writer 
      } 
     } 
    } 
} 

이이 흐름에 문제가 될 수 있거나 가능성이 원본 파일에 문제가 :

이 내 스트림을 초기화하는 코드입니다? 원본 파일 자체는 여러 텍스트 편집기에서 제대로 표시되므로 올바른 것으로 보입니다.

+0

중단 점을 설정할 때 디버거에서 어떻게 보이나요? – user1666620

+0

인코딩을 UTF8로 변경해 보셨습니까? –

+0

분명히 ASCIIEncoding을 사용하고 싶지는 않습니다. 텍스트 인코딩이 어떤 것인지 단서가 없다면 Encoding.Default를 사용하십시오. 그러나 단서가 있어야합니다. –

답변

3

|은 유효한 ASCII 문자가 아니므로 원본 파일이 ASCII 인코딩되지 않았다고 가정합니다. 인코딩 유형을 UTF로 변경하면 문제가 해결되지만 요구 사항에 맞는지 여부를 알기가 어렵습니다.

using (var sr = new StreamReader(readFile, new UTF8Encoding())) 
{ 
    using (var sw = new StreamWriter(writeFile, new UTF8Encoding())) 

유효한 ASCII 문자 목록 http://www.asciitable.com/을 참조하십시오.

+0

필자는 166을 ASCII 값으로 사용하는 여러 사이트를 검사 했으므로 ASCII 세트의 일부라고 가정했습니다 –

0

이 문제는 ASCIIEncoding 대신 Encoding.Default를 사용하여 해결됩니다.

관련 문제