POP3 接受邮件 今天我遇到一个问题,就是在用POP3接受邮件(标题,内容都是中文的),在现实的时候出现乱码.主题:=?gb2312?B?vrTXow==?=这个应该怎么解码阿.谁可给个提示或则代码阿 是VC 写的阿.高分相送阿. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 =?gb2312?B?vrTXow==?= 是被编码的标题=? 和 ?= 是头和尾gb2312 说明是gb2312编码B 说明是 Base64vrTXow==就是Base64编码的标题 你需要解码 标题中常用的编码有?B?==base64?q?==quoted-printable 试下这个函数能不能转换string NewString(LPCTSTR str){ int slen = strlen(str); char* buffer = new char[slen]; int len = MultiByteToWideChar (CP_ACP,0,str,strlen(str),buffer,slen); if(len>0 && len < slen) { buffer[len]=0; } std::string newStr = buffer ; delete[] buffer; return newStr;} 我前几天刚好写过SMTP协议的程序,楼主要base64编码的代码的就把邮箱告诉我,我发给你 [email protected] 大侠们 我这有个这么一个方法我就不知道m_pbInput,pbOutput 这俩个参数是具体含义,我这是从MIME编码器代码看到了,请教一下,讲一下含义,谢谢int CMimeCodeBase64::Decode(unsigned char* pbOutput, int nMaxSize){ const unsigned char* pbData = m_pbInput; const unsigned char* pbEnd = m_pbInput + m_nInputSize; unsigned char* pbOutStart = pbOutput; unsigned char* pbOutEnd = pbOutput + nMaxSize; int nFrom = 0; unsigned char chHighBits = 0; while (pbData < pbEnd) { if (pbOutput >= pbOutEnd) break; unsigned char ch = *pbData++; if (ch == '\r' || ch == '\n') continue; ch = (unsigned char) DecodeBase64Char(ch); if (ch >= 64) // invalid encoding, or trailing pad '=' break; switch ((nFrom++) % 4) { case 0: chHighBits = ch << 2; break; case 1: *pbOutput++ = chHighBits | (ch >> 4); chHighBits = ch << 4; break; case 2: *pbOutput++ = chHighBits | (ch >> 2); chHighBits = ch << 6; break; default: *pbOutput++ = chHighBits | ch; } } return (int)(pbOutput - pbOutStart);} D3D框架程序问题 文本如何转成乱码? vector 以下DLL两种前缀方式,为什么结果不一样 怎样把背景设置为透明 请问如何将_variant_t类型数据转换为Date 谁有数据库操作的源程序 ●★CMainFrame的子函数如何调用CxxDoc的子函数(在线等待,解决马上给分)★● 怎么在公司内跨网段发网络唤醒包呢? 我想创建可以在任何一个OnClick事件中调用的函数,怎么写? 发送关于单击按钮的信息,sendmessage()的参数怎么填? 我是菜鸟,问下DLL怎样才可以不用注册就可以被其他语言调用。
是被编码的标题=? 和 ?= 是头和尾gb2312 说明是gb2312编码B 说明是 Base64vrTXow==就是Base64编码的标题 你需要解码
?B?==base64
?q?==quoted-printable
string NewString(LPCTSTR str)
{ int slen = strlen(str);
char* buffer = new char[slen];
int len = MultiByteToWideChar
(CP_ACP,0,str,strlen(str),buffer,slen);
if(len>0 && len < slen)
{
buffer[len]=0;
}
std::string newStr = buffer ;
delete[] buffer;
return newStr;
}
我就不知道m_pbInput,pbOutput 这俩个参数是具体含义,我这是从MIME编码器代码看到了,请教一下,讲一下含义,谢谢
int CMimeCodeBase64::Decode(unsigned char* pbOutput, int nMaxSize)
{
const unsigned char* pbData = m_pbInput;
const unsigned char* pbEnd = m_pbInput + m_nInputSize;
unsigned char* pbOutStart = pbOutput;
unsigned char* pbOutEnd = pbOutput + nMaxSize; int nFrom = 0;
unsigned char chHighBits = 0; while (pbData < pbEnd)
{
if (pbOutput >= pbOutEnd)
break; unsigned char ch = *pbData++;
if (ch == '\r' || ch == '\n')
continue;
ch = (unsigned char) DecodeBase64Char(ch);
if (ch >= 64) // invalid encoding, or trailing pad '='
break; switch ((nFrom++) % 4)
{
case 0:
chHighBits = ch << 2;
break; case 1:
*pbOutput++ = chHighBits | (ch >> 4);
chHighBits = ch << 4;
break; case 2:
*pbOutput++ = chHighBits | (ch >> 2);
chHighBits = ch << 6;
break; default:
*pbOutput++ = chHighBits | ch;
}
} return (int)(pbOutput - pbOutStart);
}