簡體   English   中英

如何:Twisted privmsg 接受非 ascii 字符串

[英]how to: Twisted privmsg to accept non-ascii strings

我有一個使用 Twisted 用 python 編寫的 IRC 機器人。

它可以打印非 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 收到的 msg 上強制編碼為 UTF-8?

我認為您想要“解碼”,而不是“編碼”。 privmsg的參數是一個字節字符串( str ,在python 2.x 中),所以如果你希望它是文本,你必須對這些字節進行解碼。

您不能強制編碼為 UTF-8,因為編碼是您碰巧從服務器收到的任何內容。 由於 IRC 完全不支持字符集,這是您能做的最好的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM