建立简单的TCP连接,教程网上有很多,这里主要讲客户端接收socket数据流里的字符串解码问题
1、简单的接收中文
final byte[] buffer = new byte[1024];//创建接收缓冲区 String json = new String(buffer,"gb2312"); System.out.println("socket接收到服务端返回的数据:" + json);
这样也是可以接收的,但是中文后面会出现乱码,内容是正常显示的。
2、上诉问题的原因:
汉字编码时会被拆分,有可能放在不同的字节包里,所以客户端编码时会失败,所以会产生乱码
解决方法:将所有的字节包在一起,统一编码转换成字符串,治好后在进行处理
int size = 1024 * 64; private InputStreamReader inputstreamreader;
DataInputStream inputData = new DataInputStream(socket.getInputStream()); inputstreamreader= new InputStreamReader(inputData, "gb2312"); int count = 0; char[] buffer = new char[size]; StringBuffer sb = new StringBuffer(); while ((count = inputstreamreader.read(buffer, 0, buffer.length)) > -1) { sb.append(buffer, 0, count); if (count < size) { break; } } String temp = sb.toString(); System.out.println(temp);
这样就可以正常打印出来了。