2016-09-26 8 views
1

.txtファイルからテキストを読み取るプログラムを作成しようとしていますが、特定の単語が何回使用されたのかをカウントしたいと考えています。EmojisのJavaでのサポート(NetBeans)?

テキストにはemojisも含まれていますが、Javaはこれらのemojisをコンソールに出力するときに角括弧[]で印刷します。

Netbeansはこれらの絵文字を検出/サポートできますか? いくつかの例: (,,,✋)

バッファ付きリーダーとライターを使用しています。

 while((line = bufferedReader.readLine()) != null) { 

      System.out.println(line); 

     } 

乾杯!

私はこれらの絵文字がそのようにあなたは、このような文字集合にInputStreamReaderを使用することができUTF-8でフォーマットさていると思う

答えて

2

あなたは(おそらくtofus)の正方形を見ているあなたができるフォントを持っていないので、それらの文字をレンダリングする。だから最初のステップは、あなたがそのようなフォントを持っていることを確認することです。

これらの文字をレンダリングできるフォントであっても、NetBeansコンソールで正しく印刷されるとは限りません。これは、絵文字が通常BMPコードポイント(> 0xFFFF)で、2つのUTF-16文字( - >"\uD83D\uDE48")でエンコードされているためです。これらの2文字はSurrogate Pairsで、BMPコードポイントを使用して非BMPコードポイントを表す方法です。

IDEは"\uD83D\uDE48"を1つのコードポイント(0x1F648)に変換してから、このコードポイントをレンダリングするようにフォントに要求し、2つの分離した代理ペアは表示しません。

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("\uD83D\uDCA9".codePointAt(0)) -> 1f4a9 
+0

これは、多くの助けになります、ありがとう! –

0

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

を運ん、残念ながら、まだ同じ問題に直面して:/ –

+0

申し訳ありませんイムが、私はあなたを誤解質問。この絵文字を端末に表示する方法はないと思います。私の最後のアイデアは、コードポイントに変換してprintln()で数字を表示することです。 – Marvin

+0

Marvin、これを指摘してくれてありがとう、コードポイント番号が私には十分である(私はちょうど何回使用されている)。角括弧[]ではなく、コードポイントの値をどのように表示するかについて親切に指導できますか?どうもありがとう。 –

関連する問題