2011-05-09 4 views
3

ASCII 인코딩을 사용하여 파일을 만들었지 만 해당 파일의 인코딩 유형을 테스트 할 때 UTF8Encoding을 반환합니다.C# 파일 인코딩 유형이 변경 되었습니까?

아무도 이유를 설명하거나 내 실수를 찾아 낼 수 있습니까 ??

CODE :

만들기 파일 :

FileStream _textStream = File.Open("CreateAsciiFile.txt", FileMode.Create, FileAccess.Write); 
StreamWriter _streamWriter = new StreamWriter(_textStream, System.Text.Encoding.ASCII); 

Byte[] byteContent = BtyeTowrite(); // This returns the array of byte 
foreach(var myByte in byteContent) 
    _streamWriter.Write(System.Convert.ToChar(myByte)); 

는 파일 읽기 :

StreamReader sr = new StreamReader(@"C:\CreateAsciiFile.txt",true); 
string LineText= sr.ReadLine(); 
System.Text.Encoding enc = sr.CurrentEncoding; 

여기 ENC가 UTF8Encoding를 제공을 ... 그러나 나는 ASCII을 기대하고있다 ???

답변

3

인코딩을 쿼리하기 전에 독자로부터 읽어야합니다. 그래서 sr.CurrentEncoding에게 전화하기 전에 뭔가를 읽어보십시오. StreamReader는 을 인코딩하려고 시도하는 첫 번째 바이트를보고 인코딩이이고 ASCII에 BOM이 없으므로 인식 할 수 없기 때문에 잘못된 결과가 발생할 수 있습니다. 예를 들어 ASCII 인코딩 파일 ISO-8859-1 인코딩 된 파일과 (이진 수준에서) 차이가 없습니다.

+0

좋아요. 그런 식으로 동일한 인코딩 유형을 반환합니다. – PawanS

1

대답은 아마도 here입니다 : "

모든 유효한 ASCII 문자는 유효한 UTF-8과 동일한 바이너리 값을 유니 코드 문자 인코딩입니다 즉

, 당신의 ASCII 파일. 올바른 UTF-8 및 ASCII입니다 .UF-8로 감지됩니다.

+0

올바른 경우 ASCII는 쓸모가 없어야합니다. 올바른 것일 수도 있습니다. ?? 그러나 만약 내가 그것을 왜 UTF8을 되 돌리는지 ASCII? – PawanS

+0

ASCII는 UTF8 안에 들어가지만 그 반대가 사실이 아닙니다. UTF8은 ASCII와 다릅니다. ASCII는 UTF8과 호환되기 때문에 UTF8을 얻습니다. – Jaapjan

관련 문제