我正在使用 chatterbot 库开发一个聊天机器人。聊天机器人是我的母语 --> 斯洛文尼亚语,其中有很多奇怪的字符(例如:š、č、ž)。我正在使用python 2.7。
当我尝试训练机器人时,图书馆遇到了上述字符的问题。例如,当我运行以下代码时:
chatBot.set_trainer(ListTrainer)
chatBot.train([
"Koliko imam še dopusta?",
"Letos imate še 19 dni dopusta.",
])
它引发以下错误:
UnicodeDecodeError:“utf8”编解码器无法解码位置 12 中的字节 0x9a:无效的起始字节
我将这# -*- coding: utf-8 -*-
一行添加到文件的顶部,我还通过我的编辑器(Sublime text 3)将所有使用文件的编码更改为 utf-8,我使用以下代码更改了系统默认编码:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
字符串的类型为unicode。
当我尝试使用这些奇怪的字符获得响应时,它可以工作,它们没有问题。例如,在与上述训练代码相同的执行过程中运行以下代码(当我在训练字符串中将 'š' 更改为 's' 并将 'č' 更改为 'c' 时),不会引发错误:
chatBot.set_trainer(ListTrainer)
chatBot.train([
"Koliko imam se dopusta?",
"Letos imate se 19 dni dopusta.",
])
chatBot.get_response("Koliko imam še dopusta?")
我找不到这个问题的解决方案。有什么建议么?提前感谢负载。:)
编辑:我使用from __future__ import unicode_literals
, 来制作 unicode 类型的字符串。我还使用该方法检查了它们是否真的是 unicodetype(myString)
我也想粘贴这个链接。
编辑 2:@MallikarjunaraoKosuri - 代码有效,但在我的情况下,我在聊天机器人实例初始化中还有一件事,如下所示:
chatBot = ChatBot(
'Test',
trainer='chatterbot.trainers.ListTrainer',
storage_adapter='chatterbot.storage.JsonFileStorageAdapter'
)
这是我的错误的原因。聊天机器人创建的 json 存储文件是用我的本地编码而不是 utf-8 创建的。似乎默认存储(.sqlite3)没有这个问题,所以现在我将避免使用 json 存储。但我仍然有兴趣找到解决此错误的方法。