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

wxyxl 2001-04-19 09:50:00
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



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

我不懂的是为什么我在接受数据的时候已经坐了编码转换,
为什么还是乱码呢,请高手指教!
...全文
153 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxyxl 2001-04-23
  • 打赏
  • 举报
回复
to yangzi(笨笨):
你那段程序是处理汉字显示的吧,但是如果汉字和字母在一起的时候,会出问题吗,
是不是会把两个字母也转化成一个汉字呢?
taolei 2001-04-23
  • 打赏
  • 举报
回复
email里明明有这么一行:
Content-Transfer-Encoding: quoted-printable

编码方式就是quoted-printable,一个等号后面跟ASCII码,就这么简单。
yangzi 2001-04-21
  • 打赏
  • 举报
回复
给你一段程序,是用C写的,你自己改成javd吧:
#include <stdio.h>
void main(int argc, char * argv[])
{
FILE * fp; char ch, ch1, ch2; unsigned char hz;
fp = fopen(argv[1], "rt");
for (;;) {
ch = getc(fp); if (ch == EOF) break;
if (ch == '=') {
ch1 = getc(fp); if (ch1 == '\n') 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);
}
yangzi 2001-04-21
  • 打赏
  • 举报
回复
那是MIME的一种编码方式,叫“Quoted-Printable”
你自己在网上找一下解码的函数吧。
Dureek 2001-04-20
  • 打赏
  • 举报
回复
可以去试试java mail, 参考 http://java.sun.com/products/javamail/index.html
抱歉帮不了你:p

如果不是BASE64之类的编码, 可以试试上面robber的方法, 比如:
str = new String(str.getBytes(), System.getProperty("file.encoding")); //最好要知道IMail的默认编码格式 :(
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
各位高手帮忙解决一下嘛!
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
怎么没人回答啊?没有人做过这方面的研究吗?
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
to robber(海盗) AllError(错误大全) :
怎么不发表意见啦!帮忙解决一下好吗?谢谢!
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
能告诉我怎么样解码吗?最好能付上源代码!谢谢!
AllError 2001-04-20
  • 打赏
  • 举报
回复
邮件一般是base64编码格式,你需要用base64来解码
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
to robber(海盗):
我按你说的试了一下可是输出结果还是没有变啦,邮件是用Foxmail3.1发的。
邮件服务器是IMail,是不是还是编码转换有问题?我真是很糊涂这个编码转换,
请问发送过去的是Unicode的编码吗?谢谢!
虎叔 2001-04-20
  • 打赏
  • 举报
回复
首先你要考虑Server传过来的字符串是什么格式的数据!
从内容上看,Server传过来的数据是GB2312,如果你的系统是windows,那你应该不用任何转换。
另外你还可以试试:
b = str.getBytes("8859_1");
str = new String(b);
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
有人能告诉我上面输出的是什么编码格式吗?
wxyxl 2001-04-20
  • 打赏
  • 举报
回复
to skyyoung(路人甲)
那是什么啊?很遗憾由于公司网络的限制,我不能访问那个网站
你能把把他拷贝过来吗?究竟是什么?能告诉我吗?谢谢!
skyyoung 2001-04-20
  • 打赏
  • 举报
回复
=D0=BB=C0=F6=A3=AC=C4=FA=BA=C3=A3=A1

这不是Base64编码,好象。。。。
http://www.pridechina.com/use/luangma/luangma.html

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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