utf-8编码解码错误求助:无法解码位置249的字节0x93(附ChatterBot代码)
解决UTF-8解码错误及ChatterBot代码问题
错误根源
报错里的0x93是Windows-1252编码的左双引号字符,ChatterBot默认以UTF-8编码读取语料库文件,当语料中混入这类非UTF-8字符时,就会触发解码失败。
修复方案
转换语料文件编码
找到ChatterBot英文语料的存储路径(一般在Python安装目录的Lib/site-packages/chatterbot_corpus/data/english/下),用VS Code或Notepad++打开greetings.yml和conversations.yml:- 编辑器右下角切换编码为
Windows-1252重新打开文件 - 再选择以
UTF-8编码保存文件
- 编辑器右下角切换编码为
修改读取编码逻辑
不想改原文件的话,找到ChatterBotCorpusTrainer的源码,把读取yml文件的代码加上编码参数:# 修改前 with open(file_path, 'r') as f: data = yaml.load(f, Loader=yaml.FullLoader) # 修改后 with open(file_path, 'r', encoding='windows-1252') as f: data = yaml.load(f, Loader=yaml.FullLoader)替换特殊字符
手动打开语料文件,把所有“、”这类非标准引号替换成普通双引号",保存后再运行代码。
代码优化建议
你的代码逻辑没问题,可做两处优化:
- 合并导入语句,让代码更简洁:
from chatterbot import ChatBot from chatterbot.trainers import ChatterBotCorpusTrainer
- 添加异常捕获,方便调试时定位问题:
try: response = chatbot.get_response('What is your Number') print(response) response = chatbot.get_response('Who are you?') print(response) except Exception as e: print(f"错误详情: {e}")
内容的提问来源于stack exchange,提问作者Jash Vasa
相关产品推荐
相关产品推荐

