救急!!!请帮我看看这段POP3程序?为什么还是乱码?

wxyxl 2001-04-20 10:42:00
这个是用Java写的用POP3取信的程序,但是取出来的汉字全是16进制!
import java.io.*;
import java.net.*;
public class Pop3test
{
public static void main(String[] args)
{
try{
Socket s = new Socket(args[0],110);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String str;
str = in.readLine();
System.out.println("初始化结果"+str);

out.write("USER wxyxl\n");
out.flush();
str = in.readLine();
System.out.println("用户名输入结果 "+str);

out.write("pass wxyxl78\n");
out.flush();
str = in.readLine();
System.out.println("密码输入结果 "+str);

out.write("list\n");
out.flush();
str = in.readLine();
System.out.println("List "+str);

int i=0;
while((str = in.readLine()) != null)
{
System.out.println(str);
if (!(str.equals(".")))
{
i++;
}
else
break;
}

System.out.println("共有 "+i+" 封邮件");

String result = "";
byte[] b;
for (int j=1;j<=i;j++)
{
out.write("RETR "+j+"\n");
out.flush();
while (((str = in.readLine()) != null) &&(!(str.equals("."))))
{
b = str.getBytes("GB2312");
str = new String(b,"8859_1");
result += str + "\n";
}
System.out.println("这是第 "+j+" 封邮件");
System.out.println(result);
System.out.println("*************************");
}

s.close();
}catch(Exception e)
{}
}
}

程序的输出结果如下:

初始化+OK X1 NT-POP3 Server wxyxl.com (IMail 4.06 519-1)
用户名输入 +OK welcome
密码输入 +OK maildrop locked and ready
List +OK 1 messages (669 octets)
1 669
.
共有 1 封邮件
这是第 1 封邮件
+OK 669 octets
Received: from xieli [128.8.1.2] by wxyxl.com
(SMTPD32-4.06) id A06AA0878; Thu, 19 Apr 2001 21:51:54 PDT
Date: Thu, 19 Apr 2001 21:51:54 +0800
From: =?ISO-8859-1?Q?=CD=F5=CF=FE=D2=E5?= <xlwxy@wxyxl.com>
To: =?ISO-8859-1?Q?=D0=BB=C0=F6?= <wxyxl@wxyxl.com>
Subject:
X-mailer: FoxMail 3.1 [cn]
Mime-Version: 1.0
Content-Type: text/plain; charset="GB2312"
Content-Transfer-Encoding: quoted-printable
X-UIDL: 987714525
Status: U

=D0=BB=C0=F6=A3=AC=C4=FA=BA=C3=A3=A1

Three Email!

=D6=C2
=C0=F1=A3=A1

=CD=F5=CF=FE=D2=E5
xlwxy@wxyxl.com



*************************

我不懂的是为什么我在接受数据的时候已经坐了编码转换,
为什么还是乱码呢,请高手指教!
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pchorse 2001-04-27
  • 打赏
  • 举报
回复
编码转换是否有问题?我曾经在嵌入式系统上开发过一个POP3的邮件收发器,
你需要预先把CRLF去掉,再进行编码!
或者这封信本身编码有问题也不一定了。
你的编码函数多测试一下;如果有问题,我可以给你寄我的编码函数,。
wxyxl 2001-04-27
  • 打赏
  • 举报
回复
谢谢你的帮助!我已经作出来了,确实是编码函数的问题!
下次有机会在请教!^_^!
wxyxl 2001-04-26
  • 打赏
  • 举报
回复
哈哈!我已经作出来啦!其实很简单,只不过Java在处理
字符流方面需要注意一下!
wxyxl 2001-04-23
  • 打赏
  • 举报
回复
高手们给一个思路吧!
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
to ddddh(叶君临) :
我在取数据的时候不是把它转换成GB2312了吗?难道不是这样坐的吗?
请问发送到Email服务器的邮件在Email服务器中是以什么格式存储的,
当用POP3取数据时有是什么格式,应该怎么转换?
再就是由于公司限制所以我不能访问你的主页,你能把解码程序贴到这
上面来吗?
ddddh 2001-04-20
  • 打赏
  • 举报
回复
呵呵, 你哪里转换了? 我没有看出来啊

这是email上常用的一种编码方法, 具体细节, 你可以看这方面的介绍, 或者rfc

我的竹叶上有一个解码的程序, go.163.com/~ddddh

你可以参考一下:)
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
to chen_zhu(晓寒) :
你能给我讲讲该怎样转换吗?有这样的源程序吗?谢谢!
chen_zhu 2001-04-20
  • 打赏
  • 举报
回复
dddH兄讲的解码过程不是GB码的转换,而是MINE码或UUCODE码的转换,这两种码是现在电子邮件传输文件时候转换码,其中MINE码用的最广泛.
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
大家是不是嫌分数很少啊!要不我加点分?

4,360

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧