網絡傳輸是安卓程序中極其重要的一個環節,特別是物聯網的應用中,從節點采集數據,顯示數據,再向節點發送數據。
一般情況下,向節點發送的命令都是由字符串拼接而成,而節點地址卻不同,在網絡中是以字節流的方式進行傳輸,這就涉及到了一些轉碼方面的知識,這里不做深入地講解,只是簡單介紹一下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"方式把字符串類型轉換回來,這樣發送就能解決亂碼的問題。