Eclipse IDE 使用代理对处理表情符号

Eclipse IDE processing emojis using surrogate pairs

我找不到明确的答案。 ECLIPSE IDE 支持表情符号吗?我在这里阅读了很多关于堆栈溢出的代理对,但我无法得到明确的答案。

我必须逐个字符地读入文本文件,并且我正在使用 FileInputStream。

是否可以使用代理对处理表情符号?我想使用 select 几个苹果表情符号。这些具体: 通过处理它们,我的意思是我想在读取文件时将它们识别为特定的表情符号。

如果是这样,有人可以给我举个例子吗?

InputStreams 用于读取字节; Readers 用于读取字符。所以你应该使用从 Files.newBufferedReader 获得的 Reader,或者使用 FileReader 或 InputStreamReader.

尽管 Java 在 String 中使用代理项对来表示表情符号和许多其他类型的 Unicode 字符,但您不需要直接处理代理项对。替代值之所以存在,是因为许多字符值对于 Java char 类型来说太大了。如果您将单个字符读取为 int 值(例如,使用 CharSequence.codePoints 方法),您每次都会获得整个字符值,并且您永远不会看到或必须处理代理值。

在撰写本文时,表情符号由 Unicode 定义为位于 Emoticons block, part of the Supplemental Symbols and Pictographs block, and three legacy characters in the Miscellaneous Symbols 块中。

因此,使用 BufferedReader 并使用 int 遍历字符数据可能如下所示:

try (BufferedReader reader =
    Files.newBufferedReader(Paths.get(filename), Charset.defaultCharset())) {

    IntStream chars = reader.lines().flatMapToInt(String::codePoints);
    chars.forEachOrdered(c -> {
        if ((c >= 0x2639 && c <= 0x263b) ||
            (c >= 0x1f600 && c < 0x1f650) ||
            (c >= 0x1f910 && c < 0x1f930)) {

            processEmoji(c);
        }
    });
}