RT
代码如下
private InputStream is = null;
//private OutputStream os = null;
private BufferedInputStream bis = null;
private BufferedOutputStream bos = null;
//BufferedReader in = null;
byte[] by;
byte[] bytes;
socket = new Socket(ip,port);
is = socket.getInputStream();
bis = new BufferedInputStream(is);
by = new byte[128];
int length = 0;
while( (length = is.read(by)) != -1 ) {
str = str + new String(by,0,length);
}
接收的str在拼接的时候会产生中文乱码
知道的帮个忙解决下 弄了好一阵了
------解决方案--------------------
对于中文,发送时进行编码,接收时进行解码
一般来说,最简单的做法是直接做字节数组编解码
发送时,str -> str.getBytes("gbk")
接收时 new String(bytesBuffer,0,size)
或者也可以用Baes64编解码,这样就算另一方没有相应字符集的情况下,正常收发数据
------解决方案--------------------
写入outputstream的时候没设置编码?
是直接写的字符串还是字节数组,要是数组的话,是用什么编码生成的数组
注意两边编码一致就可以
------解决方案--------------------
编码反解,如果没有设置,默认中文应该是gbk
------解决方案--------------------
byte[] array=str.getBytes("GBK");
String newStr=new String(array,"GBK");