首先应该弄明白数据是从哪儿出来的,一般来说编码方式可能是iso-8859-1编码,你试试看
result=new String(msg.get("iso-8859-1"),"gbk");看看

解决方案 »

  1.   

    我取数据只能通过厂商提供的接口,而不能直接读数据库,
    接口,只是返回给我一个DTO,我取的时候只能是
    DTO treatment=FactoryDAO.get(id);
    String name=treatment.getName();
    我看到的getName()就已经是乱码“脛茫”了,而且,数据库中的name是“你”也搞不清楚“脛茫”是怎么出来的
    现在我只能对这个乱码进行解析,如果能有什么方法能够把“脛茫”转换为“你”就成功了
      

  2.   

    String name=treatment.getName();
    name = new String(name.getBytes("ISO8859_1"),"GBK");just try!
      

  3.   

    回复 西京布衣
    早就试过了,用你那种方法得到的name是譎
    还是不对
      

  4.   

    回复  西京布衣  
    早就试过了,用你那种方法得到的name是“??”  
    还是不对
      

  5.   

    试试这个String name=treatment.getName();
    name=new String(name.getBytes("ISO8859_1"),"GB2312");
    System.out.println(name);
      

  6.   

    ????就是编码的问题了,不是范围大的编码落的小范围(如unicode转iso-8859-1)或小范围落到大范围(如iso-8859-1转unicode)都会出现????
      

  7.   


    还是找原厂商的技术人员问问他们是怎么转编码的,再有针对的进行转码吧
    没准是他们的一个bug呢