其实这个问题大家应该讨论一下,做一个faq
我当前也只会处理
gb2312,iso8859和ucs2这三种编码。大家把自己会的东西都贴一下,斑竹来归纳一下,做一个faq

解决方案 »

  1.   

    sun.misc.*有 encode和decode 的类
      

  2.   

    //*************************************************************************
    /**
    * 对字符串进行解码处理
    * @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;
        }
      

  3.   

    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");
    }
      

  4.   

    BASE64,quoted-printable都是邮件的编码格式,另外还有UUENCODE的,用com.sun.mail.util.*都可以处理了。
      

  5.   

    我是菜鸟一个,怎么用com.sun.mail.util.*里面的类进行处理,你能举个例子对BASE64,quoted-printable的编码格式进行处理吗?谢谢先!!!