toCharArray在Android 4.3和之前的Android SDK之间返回不同的结果

时间:2013-09-16 00:51:07

标签: java android utf-8 bytearray arrays

以下代码的字符串方法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);

1 个答案:

答案 0 :(得分:0)

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

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

我不确定它是否应被视为两个无效字符或仅一个;你可以争辩这两种情况。你可能不应该以任何方式依赖这种行为。