diff --git a/IrcTokens/StatefulDecoder.cs b/IrcTokens/StatefulDecoder.cs index e094760..2304431 100644 --- a/IrcTokens/StatefulDecoder.cs +++ b/IrcTokens/StatefulDecoder.cs @@ -13,14 +13,26 @@ namespace IrcTokens public Encoding Encoding { - get => _encoding ?? Encoding.UTF8; - set => _encoding = value; + get => _encoding ?? Encoding.GetEncoding(Encoding.UTF8.CodePage, EncoderFallback.ExceptionFallback, + DecoderFallback.ExceptionFallback); + set + { + if (value != null) + _encoding = Encoding.GetEncoding(value.CodePage, EncoderFallback.ExceptionFallback, + DecoderFallback.ReplacementFallback); + } } public Encoding Fallback { - get => _fallback ?? Encoding.GetEncoding("iso-8859-1"); - set => _fallback = value; + get => _fallback ?? Encoding.GetEncoding(Encoding.GetEncoding("iso-8859-1").CodePage, + EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback); + set + { + if (value != null) + _encoding = Encoding.GetEncoding(value.CodePage, EncoderFallback.ReplacementFallback, + DecoderFallback.ReplacementFallback); + } } public string Pending => Encoding.GetString(_buffer); @@ -79,9 +91,6 @@ namespace IrcTokens } } - //_buffer = listLines.Last().ToArray(); - //listLines.RemoveAt(listLines.Count - 1); - var decodeLines = new List(); foreach (var line in listLines.Select(l => l.ToArray())) {