*gbk编码以utf-8的方式显示>出现菱形加问号 ��ӭ�����һ��������
*utf-8编码以GBK的方式显示> 鐧婚檰鎴愬姛鍟� 鍝堝搱鍝�
*一个悲剧>烤斤烤斤烤斤 //别人的码表被你以其他的方式打开,数据已经丢失了,有些二进制是空字符,也变成这样,所以 //只能重写 来源
因为乱码出现的是��所以(发送的是 你),我觉得是第一个,于是一开始用gbk格式,但后面发现还是出现乱码,不过这次出现的是分开两次打印的(就是第一次打印 �,第二次打印 �),于是便去用按钮读取一次
按钮单击:
case R.id.button2:finish();byte[] buf=new byte[1024];int d;while((d=inputStream.read(buf))!=-1){String dalta=new String(buf,0,d,"gbk");Log.i("text",dalta);}break;发现成功打印出来了。后面查看了一下,觉得是因为用while循环太快的原因(因为要不断接受PC端发的消息)。然后加了一个休眠就行了。
下面是读取消息的线程:
new Thread(() -> {List list=new ArrayList();StringBuffer buffer=new StringBuffer();while (true){try {if (inputStream.available()!=0) {//判断是否有数据byte[] buf = new byte[1024];int d;while ((d = inputStream.read(buf)) != -1) {String dalta = null;dalta = new String(buf, 0, d, "gbk");Log.i("text", dalta);Message message=new Message();message.obj=dalta;handler.sendMessage(message);}}} catch (UnsupportedEncodingException e) {e.printStackTrace();}catch (IOException e){e.printStackTrace();}try {Thread.sleep(1500);} catch (InterruptedException e) {e.printStackTrace();}}}).start();