import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.*;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
public class MyClientNew {
private Charset charset = Charset.forName("gb2312");

public static void main(String[] args) {
MyClientNew c = new MyClientNew();
c.postData("1422222222222222");
}    public String decode(ByteBuffer buffer){ //解码
        CharBuffer charBuffer = charset.decode(buffer);
        return charBuffer.toString();
        }        public ByteBuffer encode(String str){ //编码
        return charset.encode(str);
        }
    
public String postData(String clientData) {
ByteBuffer recvbuf = ByteBuffer.allocate(10); 
ByteBuffer sendbuf = ByteBuffer.allocate(40);
InetSocketAddress isa = new InetSocketAddress("192.168.1.117",6666);
SocketChannel sc = null;
try {
sc = SocketChannel.open();
sc.connect(isa); 

//sendbuf.flip();
sendbuf = encode("中文kkkkkk22333"); 
sc.write(sendbuf); 
sendbuf.compact();

sc.read(recvbuf); 
recvbuf.flip();
String receiveData = decode(recvbuf);
System.out.println(new String(receiveData.getBytes("gb2312"),"UTF-8"));
//System.out.println(receiveData);
} catch (Exception ex) {
ex.printStackTrace();
} finally {

}
return clientData; }
}
这是我java socket client , socket server也在windows下执行。我将client放到linux下跑时乱码
System.out.println(new String(receiveData.getBytes("gb2312"),"UTF-8"));
这样转换以下也不行。