java 里面的string 和byte[] 相互转换

  • 2017-8-25 16:18
  • PHP二次开发
  • 阅读(304)
  • 评论(0)
  • 来源:互联网
  • 摘要: 1.string 转 bytebyte midbytes=isoString.getBytes("UTF8");//为UTF8编码byte isoret = srt2.getBytes("ISO-8859-1");//为ISO-8859-1编码其中ISO-8859-1为单字节的编码2.byte转stringString isoString = new String ...
    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" );
    这样所需要的字节就有恢复了。


    PHP技术交流QQ群:422137578

    除非注明,文章均为 PHP二次开发 原创,转载请注明本文地址:http://www.php2.cc/article-2642-1.html

    相关阅读

    最新评论

    用户名:  *

    邮 箱:  *

    网 址: 注意加上“http://”哦!