Telegram Bot API sendMessage函数疑似Bug:含空格+H文本无法发送?
问题解析:Telegram Bot API sendMessage含"空格+H"发送失败
这不是Telegram Bot API的Bug,核心原因是未对URL请求参数做正确的编码处理。
具体原因
当直接拼接URL参数时,文本中的空格会被HTTP协议视为URL的分隔符,导致Telegram API无法正确解析text参数的完整内容。即使未指定parse_mode=HTML,未编码的空格也会引发请求格式错误;如果开启了HTML解析模式,部分字符组合可能触发Telegram的HTML规则校验,进一步导致请求失败。
解决办法
在PHP中,必须使用urlencode()函数对text参数进行URL编码,确保所有特殊字符(包括空格)被转换为HTTP协议可识别的格式:
$path = "https://api.telegram.org/YOURBOTAPI"; $text = urlencode("My name is Julia Hi"); file_get_contents($path."/sendmessage?chat_id=".$A_CHATID."&text=".$text);
如果使用parse_mode=HTML,还需要额外转义HTML特殊字符(如<、>、&),避免被Telegram误解析为HTML标签。
补充说明
HTTP协议要求URL中的查询参数必须经过编码,这是通用规则,并非Telegram API的特殊限制。只要正确编码参数,包含"空格+H"或其他特殊字符的文本都能正常发送。
内容的提问来源于stack exchange,提问作者Extrange planet
相关产品推荐
相关产品推荐

