1. ホーム
  2. java

[解決済み] U+1F602で" \uD83DuDE02" のような絵文字を生成するにはどうしたらいいですか?

2022-02-06 13:46:15

質問

現在、Androidで絵文字キーボードのようなものを作っていて、絵文字のリストを表示するようにしています。

画像を使いたくないので、Javaソースコードに絵文字のためのユニコード文字が必要で、String出力に絵文字を表示する必要があります。

例えば

ユニコード名。 喜びの涙の顔 ?
C/C++/Javaのソースコードです。 "\uD83D\uDE02"
http://www.fileformat.info/info/unicode/char/1f602/index.htm

Java Unicodeが必要なのはこんな感じです。 "\uD83D\uDE02" でLabelを出力すると

Label.setText("\uD83D\uDE02");`

を表示します。 FACE WITH TEARS OF JOY ????

すでにググってみたところ このリスト しかし、どのようにして \uD83D\uDE02 が生成されました。

解決方法は?

U+1F602 はユニコードのコードポイントであり、Javaはこれを読み取ることができます。

System.out.println(new StringBuilder().appendCodePoint(0x1F602).toString());

もし本当に他の種類のユニコードスケープに変換する必要があるなら、すべての文字を繰り返し処理し、それらの16進コードを出力に書き込むことができます。

for(char c : new StringBuilder().appendCodePoint(0x1F602).toString().toCharArray()) {
    System.out.print("\\u" + String.valueOf(Integer.toHexString(c)));
}
System.out.println();