You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:

    1. 编辑器右下角切换编码为Windows-1252重新打开文件
    2. 再选择以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)
    
  • 替换特殊字符
    手动打开语料文件,把所有“、”这类非标准引号替换成普通双引号",保存后再运行代码。

代码优化建议

你的代码逻辑没问题,可做两处优化:

  1. 合并导入语句,让代码更简洁:
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
  1. 添加异常捕获,方便调试时定位问题:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:05:23