你那个Subject是不是分开两截的?
如果是的话是不能分别解码的,要合起来再解码。
如果是的话是不能分别解码的,要合起来再解码。
解决方案 »
- 用C#释放access数据库删除数据后的空间
- 求一winform(C#) 打印代码
- WriteLine中如何输入 Ctrl+C?
- DataGridViewRow 复制问题
- 多线程的疑问
- protected override void OnPaint(PaintEventArgs e)这个类是自己建的还是程序自动生成的啊?
- 知道怎么在web datagrid的列中绑定图片么?
- 可能是自己c#还不够,c#真不能实现java的这段代码吗?
- 大神们,救命啊。 TFS没签入点了撤销更改了。
- 郁闷,IDbDataAdapter.Fill( DataSet )填充DataSet时,两个不同SQL语句却把结果整合到一个表中了
- StreamWrite 写入TXT文件时,好像有一个行数上限,总是不能写全,请高手指教
- 怎樣從web.config文件讀取數據
byte[] data = System.Convert.FromBase64String(base64);
MessageBox.Show(System.Text.Encoding.GetEncoding("gb2312").GetString(data));难道这样有问题?
可以说得更详细一点吗?我不是太懂,我贴一段吧.
+OK 1771 octets
Received: from mail3.corpease.net (unknown [61.145.121.45])
by 192.168.1.210 (Coremail) with SMTP id z4C+BCWCNUH4s3oD.1
for <[email protected]>; Wed, 01 Sep 2004 16:02:46 +0800 (CST)
X-Originating-IP: [61.145.121.45]
Received: from unknown (unknown [192.168.1.209])
by mail3.corpease.net (coremail) with SMTP id 2B22F13C328
for <[email protected]>; Wed, 1 Sep 2004 16:02:33 +0800 (HKT)
Received: from usercom (unknown [221.122.40.148])
by mail25 (Coremail:corpease.net) with SMTP id cZE4ABiCNUEVByiU.1
for <[email protected]>; Wed, 01 Sep 2004 16:02:33 +0800 (HKT)
X-TEBIE-Originating-IP: [221.122.40.148]
Message-ID: <000701c48ffa$08d1ce20$fe00a8c0@usercom>
From: =?gb2312?B?wrfWvsP3?= <[email protected]>
To: "zh" <[email protected]>
References: <[email protected]>
Subject: =?gb2312?B?UmU6IFAyUMHEzOy1xMq1wP0oU29ja2V0KQ==?=
Date: Wed, 1 Sep 2004 16:02:31 +0800
MIME-Version: 1.0
谢了,我试了一下,成功!我想再问一个问题:
我是参考这上面的一个贴子写的,原作者说要分B和Q来进行"解码",我不太懂
=?gb2312?后面可能是B,也可能是Q,我不明白
Q=QP Quoted-Printable 我有个解码库,共享出来,该代码被sourceforge用了//////////////////////////////////////
//copyright 2003 lzh
//email:[email protected]
//module:QP decoder
//////////////////////////////////////
using System;
using System.Text;namespace DecodeQPMod
{
/// <summary>
/// 对一段包含QP编码的字符串进行解码
/// Author:[email protected]
///
/// </summary>
public class DecodeQP
{
public DecodeQP()
{
} /// <summary>
/// 一段连续的QP编码的字符串进行解码
/// </summary>
/// <param name="HexString">要解码的一段连续的QP编码的字符串</param>
/// <param name="encode">编码方式</param>
/// <returns>已解码的字符串</returns>
private string ConvertHexToString(string HexString,System.Text.Encoding encode)
{
if(HexString==null||HexString.Equals("")) return ""; if(HexString.StartsWith("=")) HexString=HexString.Substring(1);
string[] aHex= HexString.Split(new char[1]{'='});
byte[] abyte = new Byte[aHex.Length];
for(int i=0;i<abyte.Length;i++)
{
// Console.WriteLine(aHex[i]);
abyte[i] =(byte) int.Parse(aHex[i],System.Globalization.NumberStyles.HexNumber);
}
return encode.GetString(abyte);
} /// <summary>
/// 对包含QP编码的字符串进行解码
/// </summary>
/// <param name="HexString">要解码的包含QP编码的字符串</param>
/// <param name="encode">字符编码方式,建议用Default</param>
/// <param name="nStart">开始解码的字符开始位置,一般为0</param>
/// <returns>已解码的字符串</returns>
public string ConvertHexContent(string HexString,System.Text.Encoding encode,long nStart)
{
if(nStart>=HexString.Length) return HexString; //存放要解码的字符串
StringBuilder sbHex = new StringBuilder();
sbHex.Append("");
//存放已经解码过的字符串
StringBuilder sbEncoded = new StringBuilder();
sbEncoded.Append("");
//是否已经碰到QP的字符串
bool isBegin = false;
string temp;
int i = (int)nStart; while(i<HexString.Length )
{
//初始化下次循环
sbHex.Remove(0,sbHex.Length);
isBegin = false; while(i<HexString.Length )
{
temp = HexString.Substring(i,1);//还没有开始碰到第一个QP字符时每次取一个字符进行比较
if(temp.StartsWith("="))
{
temp = HexString.Substring(i,3);//对于以等号开始的每次取3个字符
if(temp.EndsWith("\r\n"))//换行符
{
if(isBegin)
break;
// sbEncoded.Append("");
i=i+3;
}
else if(!temp.EndsWith("3D"))
{
sbHex.Append(temp);
isBegin = true;//已开始碰到第一个QP字符,放到QP缓冲区
i=i+3;
}
else //如果是以3D结尾则该字符串只是一个等号,放到已解码缓冲区
{
if(isBegin)
break;
sbEncoded.Append("=");
i=i+3;
} }
else
{
if(isBegin)//已经取得整块的QP字符串,跳出该次循环
break;
sbEncoded.Append(temp);//不是QP字符则放到已解码缓冲区中
i++;
} }
//一次循环结束,把已经取得整块的QP字符串进行解码
sbEncoded.Append(this.ConvertHexToString(sbHex.ToString(),encode));
}
return sbEncoded.ToString();
}
/// <summary>
/// 对包含QP编码的字符串进行解码,用Default字符编码方式,从字符串开始位置进行解码
/// </summary>
/// <param name="HexString">要解码的包含QP编码的字符串</param>
/// <returns>已解码的字符串</returns>
public string ConvertHexContent(string HexString)
{
if(HexString==null || HexString.Equals("")) return HexString; return this.ConvertHexContent(HexString,Encoding.Default,0);
}
}
}