0

下面代码的字符串方法toCharArray的结果在Android 4.3中是2,其他的返回1,有人知道为什么吗?

    byte[] SECRET_BYTES = {(byte) 0xfc, (byte) 0xbc};

    Log.i("string", "SECRET_BYTES - " + SECRET_BYTES.length);
    String txtPwd = new String(SECRET_BYTES, "UTF-8");
    char[] charsPwd = txtPwd.toCharArray();

    Log.i("string", "length of charsPwd - " + charsPwd.length);
4

1 回答 1

0

字节序列FCBC在 UTF-8 中不形成有效字符:

  • FC是一个无效的起始字节,因为它的 6 个最高位已设置,而 4 是允许的最大值。
  • BC是一个意外的继续字节;它前面没有有效的起始字节。

我不确定是否应该将其视为两个无效字符或仅一个;你可以支持这两种情况。您可能不应该以任何方式依赖此行为。

于 2013-09-16T14:32:44.727 回答