作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Java 中的常见模式是使用 InputStreamReader 从文件中读取字符并将其附加到 StringBuilder;最明显的方法是:
int c = reader.read();
sb.append((char)c);
但是,假设该文件(假设我们指定了 UTF-8 编码,如果它有所不同)包含一个不适合 16 位的字符(严格来说是一个代码点)。读取器会将其作为单个 32 位代码点而不是一对 16 位字符返回吗?
如果是这样,上面的最后一行实际上应该是这样的:
sb.appendCodePoint(c);
是否有已知的测试用例(UTF-8 字节序列)可以区分这两个选项?
最佳答案
正如 Javadoc 所说,Reader 将其能够将下一段输入作为单个字符返回。唯一的异常(exception)是 EOS 指标,它的 int 值为 -1。
您的建议没有依据。
关于java - InputStreamReader 应该与appendCodePoint 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19108336/
为什么下面的程序打印错误,我必须做哪些更改才能使其打印正确? public class Main { static int[] codePoints(String s) { i
java.lang.StringBuilder 的 appendCodePoint(...) 方法,对我来说,表现出乎意料。 对于高于 Character.MAX_VALUE 的 unicode 代码
我是一名优秀的程序员,十分优秀!