Emojis在java中的支持(NetBeans)?



我想编写一个程序,从。txt文件中读取一些文本,我想计算某个单词被使用了多少次。

文本中也包含表情符号,当我打印这一行时,Java在控制台中以方括号'[]'的形式打印这些表情符号。

Netbeans是否可以检测/支持这些表情符号?举几个例子:(😄😛😁、🙈✋)

我正在使用一个缓冲的读写器。

     while((line = bufferedReader.readLine()) != null) {
          System.out.println(line);
        } 

干杯!

您看到的是正方形(可能是tofus),因为您没有能够呈现这些字符的字体。所以第一步是确保你有这样一个字体。

即使有能够呈现这些字符的字体也不意味着它们将在NetBeans控制台中正确打印。这是因为表情符号通常是非bmp编码点(> 0xFFFF),因此用2个UTF-16字符编码(🙈-> "uD83DuDE48")。这两个字符是代理对,是一种使用BMP码点表示非BMP码点的方法。

IDE应该将"uD83DuDE48"转换为单个代码点(0x1F648),然后要求字体渲染此代码点,而不是两个分开的代理对。

Java String类有几个方法来处理代码点而不是字符:

String.codepoints()
String.codePointAt(int i)
Character.isBmpCodePoint(int cp)
Character.isSurrogate(char c)
Character.isHighSurrogate(char c)
Character.isLowSurrogate(char c)

Integer.toHexString("uD83DuDCA9".codePointAt(0)) -> 1f4a9

我认为这些表情符号是UTF-8格式的,所以你可以使用InputStreamReader的charSet:

 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));

相关内容

  • 没有找到相关文章