diff --git a/TextClient.cs b/TextClient.cs index 668e4a6..967aabf 100644 --- a/TextClient.cs +++ b/TextClient.cs @@ -16,7 +16,7 @@ public abstract class TextClient : IDisposable { public System.Text.Encoding Encoding { get; set; } public TextClient() { - Encoding = Utilities.ParseCharsetToEncoding(Utilities.DEFAULT_CHARSET); + Encoding = System.Text.Encoding.Default; } internal abstract void OnLogin(string username, string password); diff --git a/Utilities.cs b/Utilities.cs index 9ab764f..e1079ae 100644 --- a/Utilities.cs +++ b/Utilities.cs @@ -1,14 +1,13 @@ using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; using System.Net.Mail; using System.Text; using System.Text.RegularExpressions; namespace AE.Net.Mail { internal static class Utilities { - public const string DEFAULT_CHARSET = "ISO-8859-1"; - internal static void TryDispose(ref T obj) where T : class, IDisposable { try { if (obj != null) @@ -207,7 +206,7 @@ internal static string DecodeWords(string encodedWords) { /// If is public static Encoding ParseCharsetToEncoding(string characterSet) { if (string.IsNullOrEmpty(characterSet)) - characterSet = DEFAULT_CHARSET; + return Encoding.Default; string charSetUpper = characterSet.ToUpperInvariant(); if (charSetUpper.Contains("WINDOWS") || charSetUpper.Contains("CP")) { @@ -219,11 +218,13 @@ public static Encoding ParseCharsetToEncoding(string characterSet) { // Now we hope the only thing left in the characterSet is numbers. int codepageNumber = int.Parse(charSetUpper, System.Globalization.CultureInfo.InvariantCulture); - return Encoding.GetEncoding(codepageNumber); + return Encoding.GetEncodings().Where(x => x.CodePage == codepageNumber) + .Select(x => x.GetEncoding()).FirstOrDefault() ?? Encoding.Default; } // It seems there is no codepage value in the characterSet. It must be a named encoding - return Encoding.GetEncoding(characterSet); + return Encoding.GetEncodings().Where(x => x.Name.Is(characterSet)) + .Select(x => x.GetEncoding()).FirstOrDefault() ?? Encoding.Default; } #endregion