有的可能已经转过编码了
你试试看
String tempstr=new String(message.getSubject().getBytes("gb2312"),"iso-8859-1"));
tempstr=tempstr.getBytes("iso-8859-1"),"gb2312");
或者不要用gb2312,用GBK
你试试看
String tempstr=new String(message.getSubject().getBytes("gb2312"),"iso-8859-1"));
tempstr=tempstr.getBytes("iso-8859-1"),"gb2312");
或者不要用gb2312,用GBK
解决方案 »
- Java配置环境变量
- udp socket问题
- 编译正确,但运行时报错
- 有一道JAVA题,请教各位论坛上高手~~
- 再来一道笔试题:写一个函数将两个字节拼成一个短整型(java)
- byte[] 的相关处理
- private void arrang(int a[n])这样可以吗,如果不,怎么解决?
- 请大虾推荐java的练习书籍
- 谁帮我理清一下所有的修饰符的搭配情况啊?比如public不能和private连用,而static可以和native连用.
- 我现在是java初级程序员,以后怎么样学习java?
- 利用java.net.URLConnection上传文件
- 客户端向web server发出get请求,要用到那些类才能实现?
/**
* 对字符串进行解码处理
* @param s 要转换的字符串
* @return 返回转换后的字符串
*/
public static String decodeWord(String s) {
System.out.println("s========decode="+s);
if (s==null||s.equals("")){
return "";
}
if(!s.startsWith("=?")){
return s; //如果没有编码就进行内码转换,调用str类里getstr()
}
if (s.indexOf("=?")!=-1) {
int i = 2;
int j;
if((j = s.indexOf(63, i)) == -1)
return s;
String s1 = (s.substring(i, j));
i = j + 1;
if((j = s.indexOf(63, i)) == -1)
return s;
String s2 = s.substring(i, j);
i = j + 1;
if((j = s.indexOf("?=", i)) == -1)
return s;
String s3 = s.substring(i, j);
try {
ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(s3.getBytes());
Object obj;
if(s2.equalsIgnoreCase("B"))
obj = new com.sun.mail.util.BASE64DecoderStream(bytearrayinputstream);
else
if(s2.equalsIgnoreCase("Q"))
obj = new com.sun.mail.util.QDecoderStream(bytearrayinputstream);
else
return s;
int k = bytearrayinputstream.available();
byte abyte0[] = new byte[k];
k = ((InputStream) (obj)).read(abyte0, 0, k);
return new String(abyte0, 0, k );
} catch(Exception e) {
return s;
}
}
return s;
}
能否给我们说明一下这个方法呢?感激!!!
我也谢谢你的解码代码,还有一个问题,8bit是什么编码方式呢?