Java中的常见模式是使用InputStreamReader从文件中读取字符并将它们附加到StringBuilder中;显而易见的方法是:
int c = reader.read();
sb.append((char)c);
然而,假设文件(假设我们指定了UTF-8编码,如果它有所不同)是包含一个不符合16位的字符(严格来说是一个代码点)。读者会将其作为单个32位代码点而不是一对16位字符返回吗?
如果是这样,上面的最后一行实际上应该是:
sb.appendCodePoint(c);
是否有一个已知的测试用例 - 一系列UTF-8字节 - 可以区分这两个选项?
答案 0 :(得分:1)
如Javadoc所说,Reader会将下一条输入的内容作为单个字符返回。唯一的例外是EOS指标,-1为int.
没有根据你的建议。