使用 InputStreamReader 从文件中读取字符并将它们附加到 StringBuilder 是 Java 中的一种常见模式;显而易见的方法是:
int c = reader.read();
sb.append((char)c);
但是,假设文件(假设我们指定了 UTF-8 编码,如果它有所不同)将包含一个不适合 16 位的字符(严格来说是一个代码点)。读者会将此作为单个 32 位代码点而不是一对 16 位字符返回吗?
如果是这样,上面的最后一行实际上应该是这样的:
sb.appendCodePoint(c);
是否有一个已知的测试用例 - 一个 UTF-8 字节序列 - 可以区分这两个选项?