String 转byte[]
string 转 byte[]
byte[] midbytes = isoString.getBytes("UTF8"); //为UTF8编码 byte[] isoret = srt2.getBytes("ISO-8859-1"); //为 ISO-8859-1编码
其中 ISO-8859-1为单字节的编码
byte[] 转 string
String isoString = new String(bytes, "ISO-8859-1"); String srt2 = new String(midbytes, "UTF-8");
说明: 在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。 将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。
下面举个例子: 我们用socket传输String类型的数据时,常常用UTF-8进行编码,这样比较可以避免一个“中文乱码”的问题。 发送端:
String sendString = "发送数据"; byte[] sendBytes = sendString.getBytes("UTF8"); .......socket发送
接受端:
String recString = new String(sendBytes, "UTF-8");
但是,这里往往又会出现这样一个问题。就是想要发送的数据本身就是byte[]类型的。 如果将其通过UTF-8编码转换为中间件String类型就会出现问题 如:
byte[] bytes = new byte[]{50, 0, -1, 28, -24}; String sendString = new String(bytes, "UTF-8"); byte[] sendBytes = sendString.getBytes("UTF8"); 然后再发送 接受时进行逆向转换 String recString = new String(sendBytes, "UTF-8"); byte[] Mybytes = isoString.getBytes("UTF8");
这时 Mybytes中的数据将是[50, 0, -17, -65, -67, 28, -17, -65, -67] 因此,需要采用单字节的编码方式进行转换
String sendString = new String(bytes, "ISO-8859-1"); byte[] Mybytes = isoString.getBytes("ISO-8859-1");