还是乱码问题,大家近来看看吧,始终没解决!试过了许多方法,还是不行?800 Urgent!

kangaroo 2003-09-12 11:55:38
http://expert.csdn.net/Expert/topic/2006/2006462.xml?temp=.1288111

我现在存到数据库里面的数据是这样的:“=?utf-8?B?5oqK5Lq65rCR5b2T5oiQ5byx5pm677yB5ZGo55KH5LqL5Lu255qE6LCO6KiA5LiO?= =?utf-8?B?5LiR6KGM?= ”,
由邮件服务器里面导进去的,具体我也不知道什么编码,现在我想让它在前台正常显示出来,如果能在后台处理更好,如果不能的话,在前台看看能不能行?

Subject 的中文乱码解决了,可以正常显示了,但是From/To/Cc 同样的处理方法之后还是乱码!

用的是 javax.mail.internet.MimeUtility.decodeText()

From,To,Cc的内容是这个:

"gallium" group@gallium.com.hk, "=?big5?b?p8ugqnggqb4=?=" pcmo@ht.taisangind.com, "=?big5?b?s7kgtekgu1q=?=" chowhwai@gt.taisangind.com, "=?big5?b?vbigs7cguwy=?=" choistin@cf.taisangind.com, "=?big5?b?swagslytrpugxk4=?="/"gallium-china" llium@changan.net, "=?big5?b?v70gtlegv0e=?=" pmc@ht.taisangind.com, "=?big5?b?s68gvoqgvfcglsck0sclzq==?=" chenkfai@qt.taisangind.com, "=?big5?b?p2qgpu8gvgi=?=" nglc@cf.taisangind.com, "=?big5?b?p2ygslegrlo=?

这个是什么编码?有什么方法类可以来处理它到正常显示?

Base64,Big5?
但是我怎么处理都不行啊,急死我了,用了sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder();

大家来跟贴吧,多谢了!
...全文
267 点赞 收藏 30
写回复
30 条回复
kangaroo 2003年09月26日
littlecpu(嘿,哥们,你欠我分,快给咯) ,

兄弟,你说的编码不标准,这个我也觉得有可能,但是我是直接从邮件服务器上导入进去的,

自动就编码成那样了!

不过也有可能JAVAMAIL里面那个函数可能处理不了FROM/TO/CC里面的中文!

谢谢你的热心跟贴!

回复 点赞
kangaroo 2003年09月26日
littlecpu(嘿,哥们,你欠我分,快给咯) ,

兄弟,你说的编码不标准,这个我也觉得有可能,但是我是直接从邮件服务器上导入进去的,

自动就编码成那样了!

不过也有可能JAVAMAIL里面那个函数可能处理不了FROM/TO/CC里面的中文!

谢谢你的热心跟贴!

回复 点赞
kangaroo 2003年09月26日
littlecpu(嘿,哥们,你欠我分,快给咯) ,

兄弟,你别说脏话!


用OUTLOOK来收是正常的!可是显示繁体以及简体中文
回复 点赞
littlecpu 2003年09月25日
靠,你都说有个sendmail服务器了,用outlook来pop3收信不行吗?
outlook是世界上应用最广泛的pop3收信软件,兼容性一流,看outlook怎么表现。
回复 点赞
kangaroo 2003年09月24日
littlecpu(嘿,哥们,你欠我分,快给咯) ,

兄弟,谢谢你的人心,我不是不负责任,我是将邮件FROM/TO/CC直接从SENDMAIL里面导入到数据库里面去的,数据库里面的数据就是上面的那样!

回复 点赞
littlecpu 2003年09月23日
NoNoNo,你这样是不负责任的,我用记事本把这样地址加入eml,发现outlook也解不了码,结果和我上面的一个程序给出的结果一模一样。我怀疑这样编码不标准。请用outlook收信,告之结果。
回复 点赞
kangaroo 2003年09月23日
5555555555555555555!

No solution till now!
回复 点赞
kangaroo 2003年09月23日
上面的兄弟,

FROM/TO/CC的内容为,

"gallium" group@gallium.com.hk, "=?big5?b?p8ugqnggqb4=?=" pcmo@ht.taisangind.com, "=?big5?b?s7kgtekgu1q=?=" chowhwai@gt.taisangind.com, "=?big5?b?vbigs7cguwy=?=" choistin@cf.taisangind.com, "=?big5?b?swagslytrpugxk4=?="/"gallium-china" llium@changan.net, "=?big5?b?v70gtlegv0e=?=" pmc@ht.taisangind.com, "=?big5?b?s68gvoqgvfcglsck0sclzq==?=" chenkfai@qt.taisangind.com, "=?big5?b?p2qgpu8gvgi=?=" nglc@cf.taisangind.com, "=?big5?b?p2ygslegrlo=?
回复 点赞
littlecpu 2003年09月23日
kangaroo(雪候鸟) ( ) 信誉:77

这些信还有原件吗?你试试用outlook直接到目标pop3服务器拉几个信件回来,看看有没有乱码,另存为.eml文件看看,如果outlook从pop3拉下来的信件,能看到地址的人名部分不乱码,我也有信心让这些信件不乱码。

帖几个outlook里看到的地址人名,及eml里的未解码邮址串,大伙看看,解解
回复 点赞
kangaroo 2003年09月18日
swei412() ,

你说的这个文章我看过了,谢谢,不过还是没有对应的解决方法!

最关键点的是要懂邮件编码处理才可以!
回复 点赞
kangaroo 2003年09月18日
littlecpu(嘿,哥们,你欠我分,快给咯) ,

兄弟,我要在JSP页面上显示出来!而不跟操作系统相关!
回复 点赞
littlecpu 2003年09月18日
靠,你在繁体系统下看到的就不是乱码了
回复 点赞
kangaroo 2003年09月18日
littlecpu(嘿,哥们,你欠我分,快给咯) ,

兄弟,谢谢你的代码!

不过你输出的东西还是乱码!

看来还真是搞不定了,唉!
回复 点赞
littlecpu 2003年09月18日
这是一个调通的

StringBuffer sb = new StringBuffer(2048)
.append("\"gallium\" group@gallium.com.hk, ")
.append("\"=?big5?b?p8ugqnggqb4=?=\"pcmo@ht.taisangind.com,")
.append("\"=?big5?b?s7kgtekgu1q=?=\" chowhwai@gt.taisangind.com, ")
.append("\"=?big5?b?vbigs7cguwy=?=\" choistin@cf.taisangind.com, ")
.append("\"=?big5?b?swagslytrpugxk4=?=\" llium@changan.net, ")
.append("\"=?big5?b?v70gtlegv0e=?=\" pmc@ht.taisangind.com, ")
.append("\"=?big5?b?s68gvoqgvfcglsck0sclzq==?=\" chenkfai@qt.taisangind.com, ")
.append("\"=?big5?b?p2qgpu8gvgi=?=\" nglc@cf.taisangind.com, ")
.append("\"=?big5?b?p2ygslegrlo=?=");
int current_pos = 0;
int left_pos, mid_pos, right_pos = 0;
// =?big5?b?p8ugqnggqb4=?=
// | | |
// left mid right
StringBuffer result = new StringBuffer(2048);
String encode = null;
while(current_pos < sb.length())
{
left_pos = sb.indexOf("=?", current_pos);
if(left_pos > 0)
result.append(sb.substring(current_pos, left_pos));
else
{
result.append(sb.substring(current_pos));
break;
}
int temp1 = sb.indexOf("?b?", left_pos);
int temp2 = sb.indexOf("?B?", left_pos);
int temp3 = sb.indexOf("?q?", left_pos);
int temp4 = sb.indexOf("?Q?", left_pos);
if(temp1 > temp2 && temp2 > 0)
temp1 = temp2;
if(temp3 > temp4 && temp4 > 0)
temp3 = temp4;

if(temp1 < 0 && temp3 < 0)
{
//完了或数据不合法
break;
}
else if(temp1 > 0 && temp3 > 0)
{
mid_pos = Math.min(temp1, temp3);
encode = temp1 < temp3?"base64":"quoted-printable";
}
else
{
mid_pos = Math.max(temp1, temp3);
encode = temp1 < temp3 ?"quoted-printable":"base64";
}
right_pos = sb.indexOf("?=", mid_pos);
byte[] encodedData = sb.substring(mid_pos + 2, right_pos).getBytes("iso-8859-1");
java.io.ByteArrayInputStream bis = new java.io.ByteArrayInputStream(encodedData);
java.io.InputStream is = javax.mail.internet.MimeUtility.decode(bis, encode);
java.io.BufferedReader br = new java.io.BufferedReader(
new java.io.InputStreamReader(is, sb.substring(left_pos + 2, mid_pos)));
String line = br.readLine();
while(line!=null)
{
result.append(line);
line = br.readLine();
}
current_pos = right_pos + 2;
}
System.out.println(result); //result是结果的StringBuffer




输出:

"gallium" group@gallium.com.hk, "弄?泛 忠"pcmo@ht.taisangind.com,"章 菟 蒲" chowhwai@gt.taisangind.com, "螂?雪 ?" choistin@cf.taisangind.com, "??淚陋??鷹" llium@changan.net, "蕭 超?澶" pmc@ht.taisangind.com, "陳 ???輝 ??$痀%?" chenkfai@qt.taisangind.com, "吹?佗 ?" nglc@cf.taisangind.com, "吸?淵?娥
回复 点赞
kangaroo 2003年09月17日
各位兄弟姐妹还是不行啊!郁闷
回复 点赞
混沌到混沌 2003年09月17日
邮件的乱码问题?
这两天我在做webmail,碰到的问题可谓不少,乱码就是其中之一。比较辣手的就是附件上传后中文附件名称乱码,收邮件获取中文名称附件乱码。不过都解决了。一般的主题,内容乱码
使用xxx = new String(xxxx.getByte("iso-8859-1"))就可以了。
回复 点赞
swei412 2003年09月17日
IBM中文网站上有不少中文编码方面的文章强烈推荐大家去看看
http://www-900.ibm.com/developerWorks/cn/java/jsp_dbcsz/index.shtml
当然这方面的文章很多,希望各位也推荐推荐一些好的文章
回复 点赞
9731boy 2003年09月15日
强...
学习中.呵.很多的问题都没有碰过.看来要努力学习了
回复 点赞
yuanhua123 2003年09月15日
up
回复 点赞
kangaroo 2003年09月15日
上面的哥们,多谢你了!

不过还是不行!
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告