zoukankan      html  css  js  c++  java
  • C# 对QuotedPrintable进行解码的方法

             Quoted-Printable简称QP, 在Email系统中使用。它通常用于少量文本方式的8位字符的编码

    QP的编码方式比较简单,它的算法是:读一个字符,如果ASCII码大于127,即字符的 第8位是1的话,

    进行编码,否则忽略(有时也对7位字符编码)


    在c#中可以使用这个方法来对Quoted-Printable进行解码:


    //Quoted-Printable 解码
    public static string DecodeQP(string codeString)
    {
        //编码的字符集
        string mailEncoding = "GB2312";
    
        StringBuilder strBud = new StringBuilder();
        for (int i = 0; i < codeString.Length; i++)
        {
            if (codeString[i] == '=')
            {
                if (Convert.ToInt32((codeString[i + 1] + codeString[i + 2]).ToString(), 16) < 127)
                {
                    strBud.Append(
                    Encoding.GetEncoding(mailEncoding).GetString(
                    new byte[] { Convert.ToByte((codeString[i + 1] + codeString[i + 2]).ToString(), 16) }));
                    
                    i += 2;
                    continue;
                }
    
                if (codeString[i + 3] == '=')
                {
                    strBud.Append(
                    Encoding.GetEncoding(mailEncoding).GetString(
                    new byte[] { Convert.ToByte((codeString[i + 1].ToString() + codeString[i + 2].ToString()), 16),
                     Convert.ToByte((codeString[i + 4].ToString() + codeString[i + 5].ToString()), 16) }));
                     
                    i += 5;
                    continue;
                }
            }
            else
            {
                strBud.Append(codeString[i]);
            }
        }
        return strBud.ToString();
    }



  • 相关阅读:
    Apache、NGINX支持中文URL
    JS中关于clientWidth offsetWidth scrollWidth 等的含义
    设置apache登陆密码验证
    通过java代码访问远程主机
    win7
    Netty从没听过到入门 -- 服务器端详解
    分块分段
    数论-佩尔方程
    数论-毕达哥拉斯三元组
    HDU 5613-Baby Ming and Binary image
  • 原文地址:https://www.cnblogs.com/hanwest/p/2881885.html
Copyright © 2011-2022 走看看