在java里有关编码和解码的问题:比如对中文编码成BASE64或quoted-printable或者是其他的,应该用什么类什么方法?请赐教!! 其实这个问题大家应该讨论一下,做一个faq我当前也只会处理gb2312,iso8859和ucs2这三种编码。大家把自己会的东西都贴一下,斑竹来归纳一下,做一个faq 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sun.misc.*有 encode和decode 的类 //************************************************************************* /** * 对字符串进行解码处理 * @param s 要转换的字符串 * @return 返回转换后的字符串 *@exception *@since 1.0 */ //author by wjm //************************************************************************* 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; } java.io.UnsupportedEncodingException;java.net.URLEncoder;java.net.URLDecoder;例:String s;if(s != null){ s = s.trim(); strReturn = new String(s.getBytes("ISO8859_1"),"Windows-31J");} BASE64,quoted-printable都是邮件的编码格式,另外还有UUENCODE的,用com.sun.mail.util.*都可以处理了。 我是菜鸟一个,怎么用com.sun.mail.util.*里面的类进行处理,你能举个例子对BASE64,quoted-printable的编码格式进行处理吗?谢谢先!!! ArrayList用法迷惑 吧指定目录下的所有文件加上指定后缀 jdbc 源代码 要简单点的哦 谢了 邮箱[email protected] final用来修饰变量、方法、类分别代表什么含义? 网络编程问题 关于JDBC的问题。 格式化字符串的问题 请问各不同的浏览器版本对应支持Java相应的哪个版本编译出来的程序? 很简单的问题啊! 可我怎么不知道怎么办啊! 散分啊!!! 日期问题,搞定了我请客 TEXTAREA显示问题 简单的问题,先进得分!
/**
* 对字符串进行解码处理
* @param s 要转换的字符串
* @return 返回转换后的字符串
*@exception
*@since 1.0
*/
//author by wjm
//*************************************************************************
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;
}
java.net.URLEncoder;
java.net.URLDecoder;
例:
String s;
if(s != null)
{
s = s.trim();
strReturn = new String(s.getBytes("ISO8859_1"),"Windows-31J");
}