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

如何使用Java TelegramBot库向群组发送含表情的消息?

解决Telegram Bot发送表情不显示的问题

问题根源

你遇到的问题核心是Unicode转义错误和字节序列处理不当:

  • \u1F601是无效的Java Unicode转义,因为4字节的Emoji字符(如😁,U+1F601)在Java中需要用代理对表示,而非单个\uXXXX格式;
  • 直接写\xF0\x9F\x93\xA7这种UTF-8字节序列到字符串中,会被Java解析为四个独立的普通字符,而非完整的Emoji。

正确解决方法

1. 直接使用Emoji字符本身

这是最简单的方式,只要项目编码设置为UTF-8(绝大多数IDE默认支持),直接在字符串中写入Emoji即可:

bot.execute(new SendMessage(
    groupId,
    "text with emoji 😁"
));

2. 使用正确的Unicode代理对

对于U+1F601这类4字节Unicode字符,Java需要用两个\uXXXX的代理对表示(😁对应\uD83D\uDE01):

bot.execute(new SendMessage(
    groupId,
    "text with emoji \uD83D\uDE01"
));

3. 正确处理字节序列(不推荐,仅作补充)

如果必须从字节数组转换,要通过UTF-8编码解析,而非直接硬编码字节序列:

import java.nio.charset.StandardCharsets;

// ...

byte[] emojiBytes = new byte[]{(byte)0xF0, (byte)0x9F, (byte)0x98, (byte)0x81};
String emojiText = new String(emojiBytes, StandardCharsets.UTF_8);
bot.execute(new SendMessage(
    groupId,
    "text with emoji " + emojiText
));

额外注意

确保IDE和项目编码均设置为UTF-8,避免直接写入Emoji时出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:53:11