public void OpensReaderWithAutoDetectEncoding() { string expected = "test"; Encoding utf32 = new UTF32Encoding(false, true); byte[] resourceData = GetBytes(expected, utf32); resourceData = (byte[])ArrayUtils.Concat(utf32.GetPreamble(), resourceData); EncodedResource r = new EncodedResource( new InputStreamResource( new MemoryStream( resourceData), "description" ), Encoding.UTF8, true); StreamReader reader = (StreamReader)r.OpenReader(); Assert.AreEqual(Encoding.UTF8.EncodingName, reader.CurrentEncoding.EncodingName); string actual = reader.ReadToEnd(); Assert.AreEqual( "\uFEFF" + expected , actual); // interestingly the line below is *not* true! // Assert.AreEqual(utf32.GetString(resourceData), actual); Assert.AreEqual(utf32, reader.CurrentEncoding); }