gpt4 book ai didi

java:UTF-32 到 UTF-16 转换器

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:33 25 4
gpt4 key购买 nike

我正在尝试获取java转义码。
示例:1F612 ==> \ud83d\ude12

我尝试过:

String toConvert = "\ud83d\ude12";
String result = "";
for(int x=0;x<toConvert.length();x++){
int codePoint = Character.codePointAt(toConvert, x);
String hexStr = Integer.toHexString(codePoint);
hexStr = formatUTF(hexStr);
result += hexStr;
}
System.out.println(result);

formatUTF函数:

public static String formatUTF(String hex){
String text = hex;
for(int x = 0; x<4-hex.length();x++)
text = "0"+text;
return "\\u"+text;
}

但是输出:

run:
\u1f612\ude12

注意:1F612 十六进制 = 128530 整数

请帮忙。

最佳答案

也许这可以澄清一切。

    for (int i = 0; i < toConvert.length(); ) {
int codePoint = Character.codePointAt(toConvert, i);
i += Character.charCount(codePoint);
System.out.printf("[%d] cp: %x%n", i, codePoint);
}
for (int i = 0; i < toConvert.length(); ++i) {
char ch = toConvert.charAt(i);
System.out.printf("[%d] c: %x%n", i, (int)ch);
}

它产生两个 16 位字符的一个代码点。

    [2] cp: 1f612
[0] c: d83d
[1] c: de12

正如 UTF-16 standard说。

关于java:UTF-32 到 UTF-16 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com