如何从 JAVA 中的 UTF-8 代码中取回主角?

How can I get back the main character from the UTF-8 code in JAVA?

我正在制作一个 ASCII 编码器-解码器。我正在将字符编码为 UTF-8。为了编码,我正在使用此代码:

private String asciiReturn(String inpString){
int codePoint = 0;
StringBuilder str = new StringBuilder();
for (int i = 0; i < inpString.length(); i++){
codePoint = Character.codePointAt(inpString, i);
i += Character.charCount(codePoint) - 1;
str.append(codePoint);
str.append(" ");
}
return str.toString();
}

因此,我也可以对所有这些表情符号字符进行编码。

为这个表情符号点赞“‍♂️”,我得到“129335 127995 8205 9794 65039”。所以这基本上是表情符号的 UTF-8 十进制值,这正是我想要的。但是我的问题是解码。

我想要的是:(例子)

输入字符串:“72 117 104 33 129335 127995 8205 9794 65039”
输出字符串:“Huh!‍♂️”

原因:
72 -> 'H'

117 -> 'u'

104 -> 'h'

33 -> '!'

129335 127995 8205 9794 65039 -> '‍♂️'

提前致谢

试试这个。

private String decode(String inpString) {
    return Arrays.stream(inpString.split("\s+"))
        .map(s -> Character.toString(Integer.parseInt(s)))
        .collect(Collectors.joining());
}

String input = "72 117 104 33 129335 127995 8205 9794 65039";
System.out.println(decode(input));

输出

Huh!‍♂️

你也可以这样写你的编码方式:

static String asciiReturn(String s) {
    return s.codePoints()
        .mapToObj(Integer::toString)
        .collect(Collectors.joining(" "));
}

String s = "Huh!‍♂️";
System.out.println(asciiReturn(s));

输出

72 117 104 33 129335 127995 8205 9794 65039