private static bool TryDecodeUTF8NoBOM(Stream data, out string text) { text = null; var decoderFallback = new SimpleDecoderFallback(); var utf8Encoding = Encoding.GetEncoding(Encoding.UTF8.CodePage, NoEncoderFallback, // this is arbitrary, since we'll never encode anything with this instance decoderFallback); byte[] buffer = new byte[data.Length]; data.Read(buffer, 0, buffer.Length); var decodedCharacters = utf8Encoding.GetString(buffer, 0, buffer.Length); if (!decoderFallback.WasInvoked) { text = decodedCharacters; return(true); } data.Position = 0; return(false); }
private static bool TryDecodeUTF8NoBOM(Stream data, out string text) { text = null; var decoderFallback = new SimpleDecoderFallback(); var utf8Encoding = Encoding.GetEncoding(Encoding.UTF8.CodePage, NoEncoderFallback, // this is arbitrary, since we'll never encode anything with this instance decoderFallback); byte[] buffer = new byte[data.Length]; data.Read(buffer, 0, buffer.Length); var decodedCharacters = utf8Encoding.GetString(buffer, 0, buffer.Length); if (!decoderFallback.WasInvoked) { text = decodedCharacters; return true; } data.Position = 0; return false; }