【发布时间】:2015-07-07 20:59:57
【问题描述】:
我正在玩 Telegram 机器人开发。 我唯一没有成功的是发送 unicode 字符。
我调用“sendMessage”api的方式是在php中使用curl:
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("chat_id" => $chat_id, "text" => "\u2b50"));
上面的代码应该在聊天中发布一个星形图标,而是显示确切的文本:
\u2b50
- 转义文本 ("\\u2b50") 不起作用。
- 如果机器人在客户端中键入“\u2b50”时充当回显(回复收到的文本),它会回复星形图标。
- 键盘键的行为相同 (reply_markup.keyboard)
提前致谢
编辑: 用 bobince 的解决方案解决(谢谢!)。
使用的内联函数如:
$text = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
return iconv('UCS-4LE', 'UTF-8', pack('V', hexdec($match[1])));
}, $text);
或
$text = preg_replace("/\\\\u([0-9a-fA-F]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", $text);
【问题讨论】:
标签: php unicode telegram-bot