java中string与byte[]的转换

1.string 转 byte[]
byte[] midbytes=isoString.getBytes("UTF8");
//为UTF8编码
byte[] isoret = srt2.getBytes("ISO-8859-1");
//为 ISO-8859-1编码
其中 ISO-8859-1为单字节的编码
2.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   ,"UTF-8");   改为        String sendString= new String (     bytes   , "ISO-8859-1"  );
byte[] Mybytes=isoString.getBytes("UTF8");  改为    byte[] Mybytes=isoString.getBytes(   "ISO-8859-1"  );
这样所需要的字节就有恢复了。

转自http://zhangyuefeng1983.blog.163.com/blog/static/1083372520126693524870/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值