2011-05-09 3 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符号化されたファイルの間に(2進レベルで)差異はない。

+0

OKですが、その方法でも同じエンコードタイプが返されます – PawanS

1

答えはおそらくhereです:」

すべての有効なASCII文字が有効なUTF-8は、同じバイナリ値でUnicode文字をエンコードもあるつまり

、あなたのASCIIファイル。 UTF-8として有効です。

+0

正しい場合は、ASCIIは無用です...正しいかもしれませんしかし、私がそれをなぜUTF8を返すのですか? – PawanS

+0

ASCIIはUTF8の中に収まりますが、その逆は真ではありません。 UTF8はASCIIと同じではありません。 ASCIIもUTF8と互換性があるので、UTF8を取得します。 – Jaapjan

関連する問題