InputStreamReader应该与appendCodePoint一起使用吗?

时间:2013-10-01 05:00:32

标签: java unicode

Java中的常见模式是使用InputStreamReader从文件中读取字符并将它们附加到StringBuilder中;显而易见的方法是:

int c = reader.read();
sb.append((char)c);

然而,假设文件(假设我们指定了UTF-8编码,如果它有所不同)是包含一个不符合16位的字符(严格来说是一个代码点)。读者会将其作为单个32位代码点而不是一对16位字符返回吗?

如果是这样,上面的最后一行实际上应该是:

sb.appendCodePoint(c);

是否有一个已知的测试用例 - 一系列UTF-8字节 - 可以区分这两个选项?

1 个答案:

答案 0 :(得分:1)

如Javadoc所说,Reader会将下一条输入的内容作为单个字符返回。唯一的例外是EOS指标,-1为int.没有根据你的建议。