UnicodeEncodeError:'ascii'编解码器无法编码特征

时间:2018-01-31 16:54:35

标签: python bots

这是我在Python 2.7中的机器人代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot
bot = ChatBot('Test')
Conversa =['Oi','Olá','Tudo bem?','Eu estou bem']
bot.set_trainer(ListTrainer)
bot.train(Conversa)
while True:
      quest = input('Voce:  ')
      resposta = bot.get_response(quest)
      print ('Bot: ', resposta)

当我运行它时会出现以下错误:

Traceback (most recent call last):
  File "file/bot.py", line 15, in <module>
    quest = input('Voce:  ')
  File "<string>", line 1, in <module>
NameError: name 'oi' is not defined

如果我将输入更改为raw_input,它也会出现此错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 18: ordinal not in range(128)

1 个答案:

答案 0 :(得分:1)

你有没有使用Python 3的原因?该版本的主要原因之一是彻底消除了所有这些奇怪的问题。

如果您的任何字符串包含不在ASCII代码页中的字符,则需要使用unicode字符串,而不是字节字符串。

在您的情况下,它将如下所示:

Conversa =['Oi',u'Olá','Tudo bem?','Eu estou bem']

虽然是一个更好的解决方案,但如果您绝对肯定在Python 2上启动新项目,请在文件顶部添加from __future__ import unicode_literals