软件:java8

问题

今天在java的二进制byte和string类型的编解码中遇到了阻碍,因此仔细研究了一下相关的编解码问题。


本文介绍了java中 byte[] 和 String 的相互转换。

通过String的getBytes()方法是可以得到一个字符串的字节数组,但特别要注意的是,getBytes()方法将返回该操作系统默认的编码格式的字节数组。

  • string转byte[] 无中文

    String strHello = "Hello World";
    byte[] bHello = strHello.getBytes();
  • byte[]转string 无中文

    String strHello = new String(bHello);
  • string转byte[] 有中文

    String strChinese = "大吉大利"
    byte[] bChinese_gbk = strChinese.getBytes("GBK"); //GBK编码格式
    byte[] bChinese_utf8 = strChinese.getBytes("UTF-8"); // UFT-8编码格式
    byte[] bChinese_iso88591 = strChinese.getBytes("ISO8859-1");
  • byte[]转string 有中文

    String strChinese_gbk = new String(bChinese_gbk,"GBK");
    String strChinese_utf8 = new String(bChinese_utf8,"UTF-8");
    String strChinese_iso88591 = new String(bChinese_iso88591,"ISO8859-1");
    // "ISO8859-1"编码中无中文字符,因此strChinese_iso88591无法还原得到中文