是不是发送之前就是乱码?
试试
msgTxt=new String (msgTxt.getBytes("ISO-8859-1"),"gb2312");
如果都不行的话,我想问一下,你传输的信息是二进制流还是字符串信息?
如果是byte[]数据流的话,看看在发送之前的将字符串换成byte[]对不对
很可能在这里因为中文字符的length等原因转错了

解决方案 »

  1.   

    你的问题应该分为两部分.
    1.String ->byte[] ,byte[] -> String  (编码相关)
    2.数据传输.其中最好不要与编码相关.
    你可先在本地把String用编码转为byte[],再相应转回来,看行不行.
    行了在做传输的工作,保证传的和接收的一致.
      

  2.   

    你能否保证两边的接收和发送中对待发数据流的处理是相同的么?
    另外
    如果真的做了byte[] -> String 和 String -> byte[]的转换的话,千万要注意在java里面,中文字符虽然是两个字节,但是它的长度(在String.length()中)却还是1,所以一个中文字符必须用两个byte来存放,但转换的时候若不小心就会失真。
    我第一次处理这方面的数据时,就出过错。
      

  3.   

    发送端:
    String s = "";
    byte[] data = s.getBytes( "UTF8" );
    然后把data发出去接受端:
    byte[] data = ...; //接受到的数据
    String s = new String( data, "UTF8" );
      

  4.   

    多谢各位,我用了jimjxr(宝宝猫) 的方法就对了。