Outlook Express发动送的邮件主题如下: =?gb2312?B?yc+087rzt72+rbn9t6g=?=请指教编码/解码算法
另请问,邮件主题还有什么样的编码方式?

解决方案 »

  1.   

    有三中,B(Base64),Q(Quoted-Printable),U(UUEncode)
    上面是Base64编码,=?gb2312?B?yc+087rzt72+rbn9t6g=?=
    内容是yc+087rzt72+rbn9t6g=,只要使用base64解码就可以了.
      

  2.   

    =?gb2312?B?yc+087rzt72+rbn9t6g=?=
    其中B为编码类型指示,是吗?
    还有,如果要提供国际语言支持,可能有很多语言编码,该怎么办?
      

  3.   

    to  BCB_FANS(四大名捕之追杀令):
    那=gb2312忽略就可以了吗?有没有相关的RFC可以参考?
      

  4.   

    可以,我程序就不考虑那些东西.具体参考RFC1522.txt
      

  5.   

    可以,我程序就不考虑那些东西.具体参考RFC1522.txt
      

  6.   

    内容之外的那些部分都可忽略:下面是我的BCB代码,不过你应该看得懂.//DecodeISO8859,用来解码Subject及Attachment Filename
    AnsiString __fastcall TMailHeader::DecodeISO8859(AnsiString TextTo)
    {
      // Example:  //  =?ISO-8859-1?Q?=D6=D8=B4=F3=B9=B1=CF=D7  ddddddd  ddddddd?=
      //  =?gb2312?B?1tC/xtS6IGtmZHNmZHNmIGZkc2Zsa3Nm?=  int Pos1,Pos2,Pos3,Pos4;
      int StrLen;  StrLen=TextTo.Length();  Pos1=TextTo.Pos("=?");  if(Pos1 == 0) return TextTo;  Pos2=TextTo.SubString(Pos1+2,StrLen).Pos("?") +Pos1+1;
      Pos3=TextTo.SubString(Pos2+1,StrLen).Pos("?") +Pos2;
      Pos4=TextTo.SubString(Pos3+1,StrLen).Pos("?=")+Pos3;  if(Pos2 > Pos1 && Pos3 > Pos2 && Pos4 > Pos3)
      {
        char EncodingChar=TextTo[Pos2+1];    AnsiString BackupTextTo=TextTo;    TextTo=TextTo.SubString(1,Pos4 -1);//去掉"?="
        TextTo=TextTo.SubString(Pos3+1,StrLen);    if(EncodingChar=='Q' || EncodingChar=='q')     // Quoted-Printable Encode
        {
          int SpaceIndex;      while((SpaceIndex=TextTo.Pos("_"))>0)//替换空格
            TextTo[SpaceIndex]=char(0x20);      TextTo=Mime::DecodeQP(TextTo);
        }
        else if(EncodingChar=='B' || EncodingChar=='b')// Base64 Encode
        {
          TextTo=AnsiString((char*)Mime::DecodeBase64(TextTo));
        }
        //else if(EncodingChar=='U' || EncodingChar=='u')// UUEncode Encode,Unsupport at current version
        //{ TextTo=UUDecode(TextTo); }
        else
        {
          TextTo=BackupTextTo;
        }
      }  return TextTo;
    }
    //---------------------------------------------------------------------------
      

  7.   

    to:BCB_FANS(四大名捕之追杀令)
    呵呵,内容之外的东西都忽略
    忽略其他的东西就是内容
    是不是啊?
    你不觉得简直就是等于没说吗
    不过很感谢你的代码
    虽然我自己已经写了。
    不过我考虑的可能不够完善
    暂时不管了
    呵呵