网络传输是安卓程序中极其重要的一个环节,特别是物联网的应用中,从节点采集数据,显示数据,再向节点发送数据。
一般情况下,向节点发送的命令都是由字符串拼接而成,而节点地址却不同,在网络中是以字节流的方式进行传输,这就涉及到了一些转码方面的知识,这里不做深入地讲解,只是简单介绍一下byte类型转换成string类型中间解决乱码问题的方法。
在实际项目中,传输一般的地址并不需要进行特殊的转换,但是当byte类型中高位是1的时候有可能会在接收端收到非正确的多余字符,这是由于网络传输中转码产生的问题。
Java使用的是unicode型的字符,与C语言接收到的ascii编码有一定的区别,所以,我们在发送的时候一定要做一些处理,如下代码显示:
return new String(temp2, "ISO8859-1");
其中temp2是byte类型的数组,ISO/IEC8859-1,又称Latin-1或“西欧语言”,是标准化组织内ISO/IEC 8859的第一个8位字符集。
发送的代码如下所示:
out = new DataOutputStream(socket.getOutputStream());
out.write(data.getBytes("ISO8859-1"));
插入字符串的时候使用"ISO8859-1"编码方式来转换编码,发送的时候再使用"ISO8859-1"方式把字符串类型转换回来,这样发送就能解决乱码的问题。
华清图书馆
0元电子书,限时免费申领10本华清图书PDF版
扫码关注华清远见公众号