gpt4 book ai didi

python - 如何: Twisted privmsg to accept non-ascii strings

转载 作者:行者123 更新时间:2023-11-30 23:51:31 25 4
gpt4 key购买 nike

我有一个用 Python 编写的 IRC 机器人,它使用 Twisted。

它可以打印非 ASCII 字符串,而不会出现 self.msg(channel, str.encode('utf-8') 问题。

但是,当使用 privmsg 接收非 ASCII 字符串时,我会遇到异常:

def privmsg(self, user, channel, msg):
msg = msg.encode('utf-8')
user = user.split('!', 1)[0]
[... code goes here...]

我收到以下异常:

 File "/usr/lib64/python2.4/site-packages/twisted/words/protocols/irc.py", line 1498, in handleCommand
method(prefix, params)
File "/usr/lib64/python2.4/site-packages/twisted/words/protocols/irc.py", line 1043, in irc_PRIVMSG
self.privmsg(user, channel, message)
File "./IlyBot.py", line 58, in privmsg
msg = msg.encode('utf-8')
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 4: ordinal not in range(128)

有人知道如何强制 privmsg 收到的消息编码为 UTF-8 吗?

最佳答案

我认为你想要“解码”,而不是“编码”。 privmsg 的参数是一个字节字符串(str,在 python 2.x 中),因此如果您希望它是文本,则必须de 对这些字节进行编码。

您不能强制编码为 UTF-8,因为编码是您从服务器接收到的编码。由于 IRC 完全缺乏字符集支持,这是您能做的最好的事情。

关于python - 如何: Twisted privmsg to accept non-ascii strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com