使用pyTelegramBotAPI发送图片时触发UnicodeDecodeError报错求助
解决pyTelegramBotAPI发送图片时的UnicodeDecodeError问题
- 问题根源:打开图片文件时未使用二进制读取模式,Python尝试用文本编码解码二进制图片数据,引发编码错误。
- 修复方法:在
open()函数中指定rb(二进制只读)模式。
修改后的代码:
bot.send_photo(message.chat.id, photo=open(r'E:\site_work\telebot\img\samples\1.jpg', 'rb')) bot.send_message(message.from_user.id, "Look photo", reply_markup=markup)
错误原因解释
调用open()不指定模式时,Python默认使用文本模式(r),会用系统默认编码(Windows下为cp1251)解码文件内容。但图片是二进制文件,包含大量无法被该编码识别的字节,因此触发UnicodeDecodeError。使用rb模式后,Python直接读取二进制数据,不会执行解码操作,完全匹配Telegram API对图片数据的要求。
内容的提问来源于stack exchange,提问作者KaleWensen
相关产品推荐
相关产品推荐

