smtp,pop,imap编码的问题 smtp,pop,imap协议规定,在发送汉字等双字节字符时,需要进行编码。请问是采用什么方式编码。例如:“测试”编码为“bUuL1Q”. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /*将数据转化为Base64编码字符串*/ private string AuthStream(String strCmd) { try { byte[] by=Encoding.Default.GetBytes(strCmd.ToCharArray()); strCmd=Convert.ToBase64String(by); } catch(Exception ex) {return ex.ToString();} return strCmd; } /*解码*/ private String deCode(String strSrc) { int start=strSrc.IndexOf("=?GB2312?"); if (start==-1) { start=strSrc.IndexOf("=?gb2312?"); } if(start>=0) { String strHead=strSrc.Substring(0,start); String strMethod=strSrc.Substring(start+9,1); strSrc=strSrc.Substring(start+11); int end=strSrc.IndexOf("?="); if (end==-1) { end=strSrc.Length; } String strFoot=strSrc.Substring(end+2,strSrc.Length-end-2); strSrc=strSrc.Substring(0,end); if(strMethod=="B") strSrc=strHead+deCodeB64(strSrc)+strFoot; else { if(strMethod=="Q") strSrc=strHead+deCodeQP(strSrc)+strFoot; else strSrc=strHead+strSrc+strFoot; } start=strSrc.IndexOf("=?GB2312?"); if(start==-1) { start=strSrc.IndexOf("=?gb2312?"); } if(start>=0) strSrc=deCode(strSrc); } return strSrc; } /*Base64 解码*/ private String deCodeB64(String strSrc) { try { if(strSrc!="") { byte[] by=Convert.FromBase64String(strSrc); strSrc=Encoding.Default.GetString(by); } } catch(Exception ex) {return ex.ToString();} return strSrc; } /*Quoted-Printable 解码*/ private String deCodeQP(String strSrc) { char ch, ch1, ch2; char[] hz; String strRet=""; hz=strSrc.ToCharArray(); for (int i=0;i<strSrc.Length;i++) { ch = hz[i]; if (ch == '=') { i++; ch1 = hz[i]; if (ch1 == '\n') continue; i++; ch2 = hz[i]; int chint1,chint2; if (ch1>'9') { chint1=(ch1-'A'+10)*16; } else { chint1=(ch1-'0')*16; } if (ch2>'9') { chint2=ch1-'A'+10; } else { chint2=ch1-'0'; } ch = Convert.ToChar(chint1 + chint2); } strRet += ch.ToString(); } return strRet; } 急救,请各位老师帮帮忙。。。 一个简单的数据类型转化问题 在线等 csv文件查询 请教高手,那里有实现站外搜索引擎的资料? 谁有关于C#,.net的教学幻灯片 关于DataGridView行选定的问题(着急) asp.net mvc webapi 怎么实现带参数跳转 高分索取 Visual Studio.net(VS)下载地址,来者有分! 你们平时还上哪些其它的c#论坛? 一段代码,看不懂。。。。你懂吗? 两个进程同时更新一个文件,如何同步这两个进程?? 自动检测代码的一个小工具...
private string AuthStream(String strCmd)
{
try
{
byte[] by=Encoding.Default.GetBytes(strCmd.ToCharArray());
strCmd=Convert.ToBase64String(by);
}
catch(Exception ex)
{return ex.ToString();}
return strCmd;
}
private String deCode(String strSrc)
{
int start=strSrc.IndexOf("=?GB2312?");
if (start==-1)
{
start=strSrc.IndexOf("=?gb2312?");
}
if(start>=0)
{
String strHead=strSrc.Substring(0,start);
String strMethod=strSrc.Substring(start+9,1);
strSrc=strSrc.Substring(start+11);
int end=strSrc.IndexOf("?=");
if (end==-1)
{
end=strSrc.Length;
}
String strFoot=strSrc.Substring(end+2,strSrc.Length-end-2);
strSrc=strSrc.Substring(0,end);
if(strMethod=="B")
strSrc=strHead+deCodeB64(strSrc)+strFoot;
else
{
if(strMethod=="Q")
strSrc=strHead+deCodeQP(strSrc)+strFoot;
else
strSrc=strHead+strSrc+strFoot;
}
start=strSrc.IndexOf("=?GB2312?");
if(start==-1)
{
start=strSrc.IndexOf("=?gb2312?");
}
if(start>=0)
strSrc=deCode(strSrc);
}
return strSrc;
}
/*Base64 解码*/
private String deCodeB64(String strSrc)
{
try
{
if(strSrc!="")
{
byte[] by=Convert.FromBase64String(strSrc);
strSrc=Encoding.Default.GetString(by);
}
}
catch(Exception ex)
{return ex.ToString();}
return strSrc;
}
/*Quoted-Printable 解码*/
private String deCodeQP(String strSrc)
{ char ch, ch1, ch2;
char[] hz;
String strRet="";
hz=strSrc.ToCharArray();
for (int i=0;i<strSrc.Length;i++)
{
ch = hz[i];
if (ch == '=')
{
i++;
ch1 = hz[i];
if (ch1 == '\n') continue;
i++;
ch2 = hz[i];
int chint1,chint2;
if (ch1>'9')
{
chint1=(ch1-'A'+10)*16;
}
else
{
chint1=(ch1-'0')*16;
}
if (ch2>'9')
{
chint2=ch1-'A'+10;
}
else
{
chint2=ch1-'0';
}
ch = Convert.ToChar(chint1 + chint2);
}
strRet += ch.ToString();
}
return strRet;
}