如何从 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
我正在制作一个 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