我有一个用Python编写的XMPP机器人。它的插件之一可以执行操作系统命令并将输出发送给用户。据我所知,为了通过XMPP协议发送它,输出应该类似于Unicode。因此,我尝试以以下方式处理它:
output = os.popen(cmd).read()
if not isinstance(output, unicode):
output = unicode(output,'utf-8','ignore')
bot.send(xmpp.Message(mess.getFrom(),output))
但是,当输出中出现俄语字符时,它们并不能被很好地转换。
sys.getdefaultencoding()
表示默认命令提示符编码为'ascii',但是当我尝试执行以下操作时
output.decode('ascii')
在 Python 控制台中,我收到以下信息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 1:
ordinal not in range(128)
操作系统:Win XP,Python 2.5.4 提示:抱歉我的英语不好 :(
output = output.encode("utf-8")
吗? - dbroutput.decode('866')
对我有帮助。但是locale.getpreferredencoding(do_setlocale=True)
返回cp1251。是否有其他方法确定正确的编码?因为这个机器人也应该在Linux上工作。 - colriot