Java Android无法识别某些unicode值(表情符号)

Java Android无法识别某些unicode值(表情符号),java,android,unicode,emoticons,Java,Android,Unicode,Emoticons,我使用上面的代码来显示一些包含EditText中表情符号的文本: EditText et = (EditText) findViewById(R.id.myeditext); et.setText(StringEscapeUtils.unescapeJava("This is a text with emoji \u263A")); 这向我展示了我写的文字和一个笑脸表情符号或其他东西 但是,如果我输入另一个值而不是\u263A,例如\u1F60A,则它不起作用。它在这里显示了与此问题中的图像类

我使用上面的代码来显示一些包含
EditText
中表情符号的文本:

EditText et = (EditText) findViewById(R.id.myeditext);
et.setText(StringEscapeUtils.unescapeJava("This is a text with emoji \u263A"));
这向我展示了我写的文字和一个笑脸表情符号或其他东西

但是,如果我输入另一个值而不是
\u263A
,例如
\u1F60A
,则它不起作用。它在这里显示了与此问题中的图像类似的内容:

有人知道怎么处理吗? 多谢各位

更新

当包含Unicode的字符串是随机的时,我如何使用下面给出的答案,甚至是假设的重复问题中给出的答案

这是我想要实现的伪代码:

for ( eachFbComment as (String) randomString ) {
    //randomString example: "This is a text with emoji \u263A, string countinues here with another emoji \u1F60A, and a last emoji here \u263A! "
    print (randomString); // Here I want to display the text + emojis instead of unicode characters.
}

\uxxx
表示4位十六进制数字,16位Unicode。一些(非java)语言使用大写字母
\uxxxxx
\U0001F60A
)。您可以使用:

String emoji = new String(new int[] { 0x1F60A }, 0, 1);
这只使用一个代码点的代码点数组

et.setText("This is a text with emoji " + emoji);
是否显示表情符号取决于字体


相关更新后:

大小写:字符串包含反斜杠“u”和4到5个十六进制数字

String s = "This is with \\u263A, continuing with another \\u1F60A, and \\u263A!";
请注意,在java中,“\u1F60A”将是两个代码点,分别用于
'\u1F60'
'A'
。以上是一个自制的约定,类似于java的Unicode u-escaping。我们可以准确地看到原始的
\u1F60A

要将
s
转换为完整的Unicode字符串,请执行以下操作:

Pattern pattern = Pattern.compile("\\\\u([0-9A-Fa-f]{4,5})\\b");
StringBuffer sb = new StringBuffer();
Matcher m = pattern.matcher(s);
while (m.find()) {
    int cp = Integer.parseInt(m.group(1), 16);
    String added = cp < 0x10000
        ? String.valueOf((char) cp)
        : new String(new int[] { cp }, 0, 1);
    m.appendReplacement(sb, added);
}
m.appendTail(sb);
s = sb.toString();
Pattern=Pattern.compile(\\\\u([0-9A-Fa-f]{4,5})\\b”);
StringBuffer sb=新的StringBuffer();
匹配器m=模式匹配器;
while(m.find()){
int cp=Integer.parseInt(m.group(1),16);
添加的字符串=cp<0x10000
?字符串.valueOf((字符)cp)
:新字符串(新int[]{cp},0,1);
m、 (b)补充;
}
m、 (某人);
s=sb.toString();

你没有在你链接的帖子中找到答案吗?你是认真的吗?您已经通过上面的链接回答了您的问题。搜索堆栈溢出会在10秒内给出java的答案:@chuhx请参阅更新。@user1992请给出一个清楚的示例,说明“unicodes是随机的”。你在这里的意思很不清楚。unicode的随机性如何?它是由用户输入的吗?它是从表情符号列表中选择的吗?请给出一个有代表性的例子,精确地说明您试图实现的目标。@MichaelGaskill我没有说unicode是随机的,但包含unicode的字符串是随机的。例如,如果我想显示facebook帖子中的评论。这些注释包含可能包含表情符号的随机字符串。在这种情况下,假设我有获取这些注释所需的机制,那么当Unicode是更一般的字符串的一部分时,我如何使用下面给出的答案?我如何才能按照公认答案中描述的方式转换任何单个unicode?谢谢。它是有效的,但是当文本是随机的,没有像上面那样明确地给出时,我怎么做呢。如何使用随机文本执行此操作。我的意思是如何在一个我不知道包含什么的文本中将
\uxxx
表示为
0xXXXX
?Java在内部将文本表示为Unicode,因此唯一的问题是输入一个文件(=二进制数据)。文本文件必须是Unicode格式,如UTF-8,java中的读数应指定“UTF-8”。编辑没有问题(在编程方面)。谢谢你,但我想你没有理解我的评论。这是一个更好的解释:“例如,如果我想显示facebook帖子中的评论。这些注释包含可能包含表情符号的随机字符串。在这种情况下,假设我有获取这些注释所需的机制,那么当Unicode是更一般的字符串的一部分时,我如何使用下面给出的答案?我如何才能按照公认答案中描述的方式转换任何单个unicode?“你能帮我更清楚地理解这个问题吗?那么你有一个带有表情符号的字符串(真正的unicode代码点,如U+1F60A)。你想找到表情符号吗?
str.codePoints.filter((cp)->Character.UnicodeBlock.of(cp)。等于(Character.UnicodeBlock.EMOTICONS)).count()
或诸如此类。请查看问题更新,我想做的事情有一个伪代码。希望现在更清楚,谢谢!