有的可能已经转过编码了
你试试看
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 多线程问题,急!
- Eclipse鼠标悬停提示功能的延迟时间设置
- 关于串口的一个问题
- Java放大图片
- Component类控制控件大小和位置的方法有:setBounds 和setSize setLocation ,它们都有设置位置大小的功能,但不知道它们有什么区别?
- swing高手请进
- 求精通struts基于mvc的java web设计与开发原码
- ?问大家一个技术问题
- 关于Applet进度显示的问题
- 关于java swing combobox 下拉框被遮盖的问题
- 利用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是什么编码方式呢?