当前位置: 代码迷 >> J2EE >> socket联接服务器字节流接收中文乱码
  详细解决方案

socket联接服务器字节流接收中文乱码

热度:87   发布时间:2016-04-22 01:14:45.0
socket连接服务器字节流接收中文乱码
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");
  相关解决方案