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

解决方案 »

  1.   

    本程式由 wingfancy 所写,您可以自由拷贝、修改或者传播本程式(如修改,请通知本人)。联系:
    Email:[email protected]
    MSN:[email protected]
    QQ:54810177
    www:http://www.5meng.com
         http://www.epicn.com每次拷贝本程式或本程式的部份代码均须包含以上信息。一、本程式功能:实现网站动态地"简体->繁体"转换,即将配置文件 meng.properties 中的参量 WEB_SITE 所指定的网站转换为繁体,
    按服务器IP,即 SERVER_IP ,外加端口号,即 SERVER_PORT 可看到转换后的繁体版本(具体请参看 meng.properties 文件)。二、关于公布本程式源码原因的说明:公布本程式源码的目的是为了进一步优化、完善本程式--因本来知识、时间有限,望对本程式感兴趣
    的朋友与本人联系,一起完善。本程式的代码详细说明请参看具体代码各部份,如仍有问题,可联系本人。
    *注:由于这是本人第一次使用Java象模象样地写程式,可能代码比较乱,而且有很多不合理的地方,望观者见谅,给予意见。三、关于本程式的声明:本程式只是第一个测试版本,不供商业用途,如因本程式造成任何损失,本人概不负责。四、关于本程式中用到的文件说明:
    meng.properties 配置文件,具体请看该文件中详细说明。
    GB.class、Big5.class 简体->繁体转换时用到的资源文件。
    GB2.class、Big52.class 繁体->简体转换时用到的资源文件。
    gb_1.ndx、gb_2.ndx 简体中不合理词语转换用到的资源文件。
    b5_1.ndx、b5_2.ndx 繁体中不合理词语转换用到的资源文件。
    GB2Big5.java 本程式源代码文件。五、关于本程式工作原理的简单说明:
    1、网络原理:通过HTTP协议从客户端(浏览器)得到用户请求,将用户请求的内容翻译为简体转发至服务器(如IIS),
    从服务器端得到应答内容并转换为繁体转发到客户端(*注:对于不需要转换的文件,如图片,Flash等二进制文件采用忽略的方式提高 
    程式性能及编程难度--水平不够耶^-^);
    2、简体<->繁体转换原理:a--首先Java本身有内码转换功能,使用此功能进行第一次转换(因为此功能对于大约三分之一的汉字不能够
    正确的转换,得到结果是"?"号,真可惜了^-^);b--对一次转换后的内容中没有被正确转换的内容,即"?"号,使用资源文件 
    GB.class、Big5.class、GB2.class、Big52.class 及一一对应的原理进行再次转换(经过此次转换所有内容都已转换为目标编码);
    c--使用资源文件 gb_1.ndx、gb_2.ndx、b5_1.ndx、b5_2.ndx 对内容的不合理词语进行转换(由于简体中习惯用语和繁体中习惯用语有所出入,
    对于这些习惯用语必须进行转换;另还有一一对应时发生的问题,如对于繁体来说"头发"的"发"和"发财"的"发"是不同的字,也要进行转换)(转换完成)。六、本人对于本程式后继完善工作的想法(高手帮忙啦*o*):
    1、对于JS文件和JS代码中的连接进行处理:由于JS文件比较复杂,所以仍末敢动手处理这里边的连接,只是进行了"简体->繁体"转换。
    2、对于读取网络数据仍然存在BUG,详见程式各部份。
    3、程式仍须进一步优化。原码下载地址:
    http://61.144.28.245/hjc/web/doc/wangyou/wingfancy/GB2Big5_src.zip
      

  2.   

    unicode-->中文,相互转换。
    public static String UnicodeToChinese(String s){
      try{
         if(s==null||s.equals("")) return "";
         String newstring=null;
         newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
         return newstring;
        }
      catch(UnsupportedEncodingException e)
      {
      return s;
      }
      }public static String ChineseToUnicode(String s){
      try{
      if(s==null||s.equals("")) return "";
      String newstring=null;
      newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
       return newstring;
      }
      catch(UnsupportedEncodingException e)
      {
      return s;
     }
      }