/// 对Base64编码的解码
///
/// 需要解码的字符串
///
private static string deCodeBase64( string strSrc)
{
byte[] barr = Convert.FromBase64String ( strSrc);
string strRet = Encoding.GetEncoding("GB2312").GetString( barr);
return strRet;
}
///
/// 对QuotedPrintable编码的解码
///
/// 需要解码的字符串
///
private static string deCodeQP(String strSrc)
{
strSrc = strSrc.Replace("=\r\n", "");
char ch, ch1, ch2;
byte hz1, hz2;
byte[] hz;
Encoding gb = Encoding.GetEncoding("gb2312");
String strRet = "";
for (int i = 0; i < strSrc.Length; i++)
{
ch = strSrc[i];
if (ch == '=' && ((i + 3) < strSrc.Length && strSrc[i + 3] == '='))
{
i++;
ch1 = strSrc[i];
i++;
ch2 = strSrc[i];
byte chint1, chint2;
if (ch1 >= 'A')
chint1 = (byte)((ch1 - 'A' + 10) * 16);
else
chint1 = (byte)((ch1 - '0') * 16);
if (ch2 >= 'A')
chint2 = (byte)((ch2 - 'A' + 10));
else
chint2 = (byte)(ch2 - '0');
hz1 = (byte)(chint1 + chint2);
i++;
i++;
ch1 = strSrc[i];
i++;
ch2 = strSrc[i];
if (ch1 >= 'A')
chint1 = (byte)((ch1 - 'A' + 10) * 16);
else
chint1 = (byte)((ch1 - '0') * 16);
if (ch2 >= 'A')
chint2 = (byte)((ch2 - 'A' + 10));
else
chint2 = (byte)(ch2 - '0');
hz2 = (byte)(chint1 + chint2);
hz = new byte[] { hz1, hz2};
strRet += gb.GetString(hz);
}
else
strRet += ch;
}
return strRet;
}
0 评论:
发表评论