Feedback

C# - Quoted Printable Encoder

Veröffentlicht von am 14.02.2008
(1 Bewertungen)
Zeichenketten, die mit "quoted printable" enkodiert werden sollen, lassen einen .Net-Entwickler schon das ein oder andere graue Haar wachsen. Denn in der BCL gibt es keine Standard-Mechanismen dafür - zumindest konnte ich keine Finden, die in C# zur Verfügung stand. Deshalb habe ich eine Klasse geschrieben, die den Vorgang des Enkodierens eines Textes in "quoted printable" übernimmt.
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

public class QuotedPrintableConverter
    {
        private static string _Ascii7BitSigns;
        private const string _equalsSign = "=";
        private const string _defaultReplaceEqualSign = "=";
        
        /// <summary>
        /// Ctor.
        /// </summary>
        private QuotedPrintableConverter()
        {
            //do nothing
        }

        /// <summary>
        /// Encodes a not QP-Encoded string.
        /// </summary>
        /// <param name="value">The string which should be encoded.</param>
        /// <returns>The encoded string</returns>
        public static string Encode(string value)
        {
            return Encode(value, _defaultReplaceEqualSign);
        }

        /// <summary>
        /// Encodes a not QP-Encoded string.
        /// </summary>
        /// <param name="value">The string which should be encoded.</param>
        /// <param name="replaceEqualSign">The sign which should replace the "="-sign in front of 
        /// each QP-encoded sign.</param>
        /// <returns>The encoded string</returns>
        public static string Encode(string value, string replaceEqualSign)
        {
            //Alle nicht im Ascii-Zeichnsatz enthaltenen Zeichen werden ersetzt durch die hexadezimale 
            //Darstellung mit einem vorangestellten =
            //Bsp.: aus "ü" wird "=FC"
            //Bsp. mit Ersetzungszeichen "%"für das "=": aus "ü" wird "%FC"

            GetAllowedAsciiSigns();
            StringBuilder sb = new StringBuilder();
            foreach (char s in value)
            {
                if (_Ascii7BitSigns.LastIndexOf(s) > -1)
                    sb.Append(s);
                else
                {

                    string qp = string.Format("{0}{1}",
                        _equalsSign,
                        System.Convert.ToString(s, 16)).Replace(_equalsSign, replaceEqualSign);
                    sb.Append(qp);
                }
            }

            return sb.ToString();
        }

        /// <summary>
        /// Gets a string which contains the first 128-characters (ANSII 7 bit).
        /// </summary>
        private static void GetAllowedAsciiSigns()
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < 127; i++)
            {
                sb.Append(System.Convert.ToChar(i));
            }
            _Ascii7BitSigns = sb.ToString();
        }
    }

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!