找回密码
 加入
搜索
查看: 1931|回复: 3

pop3.au3如何显示中文文件标题?

[复制链接]
发表于 2009-3-30 20:48:17 | 显示全部楼层 |阅读模式
用pop3.au3来获取中文文件标题时总是显示乱码!如标题为“二次函数”,显示的却是“=?UTF-8?B?5LqM5qyh5Ye95pWw?=”!这个好像是UTF-8编码的。如何显示为中文呢?望高手解决!

官方pop3.au3:
http://www.autoitx.com/forum.php ... &highlight=pop3
 楼主| 发表于 2009-4-2 22:10:06 | 显示全部楼层

邮件的解码算法

以下好像是vc++6.o的邮件的解码算法,如何将它转换为Au3呢?

#include "stdio.h"
     
    void main(int argc, char * argv[])
    {
     FILE * fp; char ch, ch1, ch2;
     unsigned char hz;
     fp = fopen("d:\\a", "rt");
     for (;;)
     {
     ch = getc(fp);
     if (ch == EOF)
     break;
     if (ch == '=')
     {
     ch1 = getc(fp);
     if (ch1 == '\n' || ch1 == '=')
     {
     fseek(fp , -1, SEEK_CUR);
     continue;
     }
     ch2 = getc(fp);
     hz = (ch1>'9'?ch1-'A'+10:ch1-'0')*16+(ch2>'9'?ch2-'A'+10:ch2-'0');
     putchar(hz);
     }
     else
     putchar(ch);
     }
     fclose(fp);
     getchar();
    }
发表于 2009-11-10 14:47:33 | 显示全部楼层
帮忙顶,我也想知道这个问题如何解决。
发表于 2009-12-27 00:04:07 | 显示全部楼层
我这里碰到的是gb2312,base64编码的邮件标题解码问题。
演示如何解码,字符串应该是诸如Subject: =?gb2312?B?xOO6w6Oh?=的B?后的字符串
$Decrypt = _Base64Decode("ZXIiIENFTExQQURESU5HPTAgQ0VMTFNQQUNJTkc9MD48VFI+PFREIGhlaWdodD0iMzAiPiA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9Ijgi")MsgBox(0, '', $Decrypt)

MsgBox(0, '', BinaryToString($Decrypt))


base64的udf
Func _Base64Decode($Data)
        Local $Opcode = "0xC81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D75014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000"
        
        Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
        DllStructSetData($CodeBuffer, 1, $Opcode)

        Local $Ouput = DllStructCreate("byte[" & BinaryLen($Data) & "]")
        Local $Ret = DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
                                                                                                        "str", $Data, _
                                                                                                        "ptr", DllStructGetPtr($Ouput), _
                                                                                                        "int", 0, _
                                                                                                        "int", 0)

        Return BinaryMid(DllStructGetData($Ouput, 1), 1, $Ret[0])
EndFunc


来自官方论坛的BASE64 UDF
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 15:41 , Processed in 0.079412 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表