You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中将Unicode U+xxxx格式的表情符号转为实际表情?

Java中转换U+格式Unicode表情符号为实际字符的解决方案

问题原因

你遇到的问题根源在于:

  • U+1F601属于Unicode补充平面字符(代码点超过0xFFFF),而Java的char是16位类型,最大值仅为0xFFFF,直接将Integer.parseInt("1F601",16)强转char会截断高位,得到错误的字符🖵。
  • unescapeJava方法仅支持\uXXXX格式的转义序列,无法识别U+XXXX格式,因此无效。

解决方案

需要通过Unicode代码点(Code Point)来处理这类字符,步骤如下:

  1. 从字符串中提取U+后的十六进制数字部分;
  2. 将十六进制字符串转换为对应的int类型代码点;
  3. 使用Character.toChars()方法将代码点转换为对应的char数组(补充平面字符需要两个char组成的代理对);
  4. 将char数组转为字符串,替换原字符串中的U+XXXX部分。

代码示例

通用正则替换方式(支持多个表情符号)

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmojiConverter {
    public static void main(String[] args) {
        String input = "Hello U+1F601, nice to see you U+1F60A!";
        // 匹配U+后跟4位及以上十六进制字符(覆盖绝大多数表情符号)
        Pattern pattern = Pattern.compile("U\\+([0-9A-Fa-f]{4,})");
        Matcher matcher = pattern.matcher(input);
        StringBuffer result = new StringBuffer();

        while (matcher.find()) {
            // 获取十六进制部分并转成代码点
            int codePoint = Integer.parseInt(matcher.group(1), 16);
            // 将代码点转为对应字符的字符串
            String emoji = new String(Character.toChars(codePoint));
            matcher.appendReplacement(result, emoji);
        }
        matcher.appendTail(result);

        System.out.println(result.toString());
        // 输出:Hello 😁, nice to see you 😊!
    }
}

单个表情的简单处理方式

public class SingleEmojiConverter {
    public static void main(String[] args) {
        String input = "Hello U+1F601";
        // 提取U+后的十六进制字符串
        String hexStr = input.substring(input.indexOf("U+") + 2);
        // 转成代码点
        int codePoint = Integer.parseInt(hexStr, 16);
        // 转成表情字符串
        String emoji = new String(Character.toChars(codePoint));
        // 替换原字符串
        String output = input.replace("U+1F601", emoji);
        
        System.out.println(output); // 输出:Hello 😁
    }
}

内容的提问来源于stack exchange,提问作者TGXZereF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:55:29