From 43508f8625344a4208ab7382030dfe6c1a922d7a Mon Sep 17 00:00:00 2001 From: Andy Edinborough Date: Mon, 9 Apr 2012 08:22:08 -0500 Subject: [PATCH] updates for default encoding #54 --- TextClient.cs | 2 +- Utilities.cs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) 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