LoginSignup
3
3

More than 5 years have passed since last update.

.Net FrameworkでBOMありのストリームを読み込む

Posted at

.NETでストリームを扱う時に、BOMの扱いについて困りましたが、何とか解決。

stream.ToArray()を使う方法があるのですが、
この方法でBOMありのストリームを読みこんだ場合、
BOMも文字列に含まれてしまい、ストリームに書き込んだ文字列と異なってしまいます。

.NETは普通に書き込むとBOMありになるため、
これは困ります。

StreamReaderなどを使いましょう。

var input = "test";
var stream = new MemoryStream();
var writer = new StreamWriter(stream, Encoding.UTF8);

await writer.WriteAsync(input);
await writer.FlushAsync();

stream.Position = 0;
var reader = new StreamReader(stream, Encoding.UTF8);
var output1 = await reader.ReadToEndAsync();

stream.Close();
var output2 = Encoding.UTF8.GetString(stream.ToArray());

var b1 = input == output1; // => true
var b2 = input == output2; // => false
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3