可以从非空的UTF-8字节数组创建一个空的java字符串吗?

Ste*_*ong 3 java string utf-8

我正在尝试调试一些东西,我想知道以下代码是否能够返回true

public boolean impossible(byte[] myBytes) {
  if (myBytes.length == 0)
    return false;
  String string = new String(myBytes, "UTF-8");
  return string.length() == 0;
}
Run Code Online (Sandbox Code Playgroud)

我能传递的某些价值是否会返回真实?我已经摆弄了2字节序列的第一个字节,但它仍然产生一个字符串.

为了澄清,这发生在通过GCJ编译为原生二进制可执行文件的Java 1.4代码上的PowerPC芯片上.这基本上意味着大多数赌注都已关闭.我主要想知道Java的"正常"行为,或Java的规范是否做出了任何承诺.

Tre*_*rey 6

根据java.util.String的javadoc,当bytearray包含无效或意外数据时,不指定新String(byte [],"UTF-8")的行为.如果您希望在结果字符串中获得更多可预测性,请使用http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/CharsetDecoder.html.