about summary refs log tree commit diff
path: root/IrcTokens
diff options
context:
space:
mode:
Diffstat (limited to 'IrcTokens')
-rw-r--r--IrcTokens/StatefulDecoder.cs23
1 files changed, 16 insertions, 7 deletions
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<string>();
             foreach (var line in listLines.Select(l => l.ToArray()))
             {