首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnicodeEncodeError与Twitch.tv IRC机器人

UnicodeEncodeError与Twitch.tv IRC机器人
EN

Stack Overflow用户
提问于 2016-09-18 18:46:07
回答 1查看 510关注 0票数 0

所以我试着设计一个简单的Twitch.tv IRC机器人。bot在通道中读取传入的消息,如果消息与某些模式匹配,bot将执行某些任务。我所遇到的问题是,如果用户输入某些unicode字符(即,如果用户输入“¯_(ツ)_/ if”,程序将抛出错误并崩溃:

UnicodeEncodeError未被用户代码处理

“‘charmap”编解码器不能对位置13中的字符'\xaf’进行编码:字符映射到<未定义>

现在,我希望我的程序能够处理这些输入,但我不知道如何修改或添加到我的代码中来启用它。这是我的密码:

http://pastebin.com/EBTaqpbZ (我不知道如何使用堆栈溢出代码粘贴)

我收到的错误代码的主要部分是:

代码语言:javascript
复制
while True:                                                     #Main Loop
    response = s.recv(1024).decode("utf-8")
    if response == "PING :tmi.twitch.tv\r\n":                   #If Ping, return Pong
        s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
        print("Pong Successful")
    else:                                                       #Else, Decode User Message
        username = re.search(r"\w+", response).group(0)         #Gets User
        message = CHAT_MSG.sub("", response)                    #Gets Message
        print (username + ": " + message)                       #Prints User Message
        if message.find("!hello") != -1:                        #Simple Test command to see if Reading Chat Input
            chat ("Hello! I'm speaking!\r\n")
    time.sleep(1 / cfg.RATE)

错误似乎总是发生在代码行:print (username + ": " + message)

有人知道我应该如何处理这些unicode字符吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-18 20:43:57

(我会发表评论,链接到答案,但我还没有足够的声誉。)

所以我猜你是在用窗户吧?所发生的情况是,控制台使用的编码无法打印unicode字符,这将导致崩溃。

所以问题不在于代码本身,而在于所使用的工具。例如,当从linux控制台运行时,代码运行良好。解决此问题的一种方法似乎是使用win-unicode-控制台从windows控制台启用unicode输入和输出。有关问题和解决方案的更广泛描述,请参见这个答案

如果您只需要打印以进行调试,您也可以绕过这个问题:

代码语言:javascript
复制
msg = username + ": " + message
print (msg.encode("utf-8")) 

但是,这不是一个真正的解决方案,输出将类似于

b'\xc2\xaf_(\xe3\x83\x84)_/\xc2\xaf\r\n‘

对于您的示例字符串,所以不太方便。我建议阅读我所链接的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39561354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档