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

如何通过Bash脚本使用Curl向Telegram机器人发送表情符号?

解决Bash脚本向Telegram机器人发送表情符号的问题

我来帮你搞定这个表情符号发送的难题!其实Bash是支持Unicode的,只是直接粘贴或者转义序列的处理方式没找对,下面给你两种靠谱的解决方案:

方法一:用printf生成正确的Unicode字符

直接在Bash里写\ud83d\udd14会被转义,因为Bash会把反斜杠当成特殊字符处理。我们可以用printf来解析这个转义序列,生成对应的表情符号:

# 先设置环境确保UTF-8编码(可选,但能避免终端乱码)
export LC_ALL=en_US.UTF-8

# 用printf生成表情符号,赋值给text变量
text=$(printf "\ud83d\udd14")

# 调用Telegram API发送消息
curl -s -X POST "https://api.telegram.org/$API/sendMessage" -F chat_id="$chat" -F text="$text"

这样printf会把\ud83d\udd14转换成对应的锁形表情符号,curl发送表单数据时会自动处理编码,Telegram就能正确识别了。

方法二:直接发送JSON格式请求

如果你更倾向于用JSON格式(和你提到的预期输出一致),可以改用-d参数发送JSON数据,注意要正确转义双引号:

curl -s -X POST "https://api.telegram.org/$API/sendMessage" \
  -H "Content-Type: application/json" \
  -d "{\"chat_id\": \"$chat\", \"text\": \"\ud83d\udd14\"}"

这里的关键是用双引号包裹整个JSON字符串,同时把JSON内部的双引号用反斜杠转义(\"),这样Bash就不会把内部的双引号当成变量边界,Telegram收到的JSON里就会是正确的"text":"\ud83d\udd14"格式。

额外注意事项

  • 确保你的脚本文件是以UTF-8编码保存的,很多编辑器默认可能不是这个编码,会导致表情符号乱码。
  • 终端环境也要设置为UTF-8(一般现代终端默认都是,但可以用echo $LANG检查,输出包含UTF-8就没问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:32:22