处理字节数组的字符串构造函数,产生奇怪的结果

时间:2014-05-16 19:10:28

标签: java string byte

我正在使用隐式String构造函数来处理字节数组..但结果很奇怪。我是否需要为正确的输出做更多的事情......?任何帮助将不胜感激。这是我的代码..

    byte[] arr = { 23, 34, 20, 65, 88, 95 };

    String s1 = new String(arr);
    System.out.println("First: "+s1);

    String s2 = new String(arr, 1, 3);
    System.out.println("Second: "+s2);

打印:

  

首先:?“?AX _

     

第二:?AX

2 个答案:

答案 0 :(得分:2)

您正在使用的String()构造函数是根据Java环境的默认字符集解释数组中的字节。这可能有所不同。

如果您要使用特定字符编码,例如“US-ASCII”或“UTF-8”,则应使用其他构造函数指定字符集,例如:String(byte[] bytes, String charsetName)

答案 1 :(得分:1)

这是对的。这些是您提供的代码的字符。如果将字节数组更改为此字符,则会看到字符a-f:

byte[] arr = { 97, 98, 99, 100, 101, 102 };