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

Python读取RTF文件至937行报ASCII解码错误如何解决

问题根因

打开文件时未显式指定编码,当前Pythonista环境默认使用ASCII编码读取文件,当读取到第937行位置的0xe9字节(对应é字符,超出标准ASCII 0-127的编码范围)时,直接触发解码错误中断运行。

修复代码

直接替换原有代码即可,核心是显式指定兼容RTF文件的编码,增加错误兜底,同时用上下文管理器自动处理文件资源释放:

# 若打印出现乱码,可将encoding参数值替换为"utf-8"重试
with open("Steno Dictionary.rtf", "r", encoding="latin-1", errors="replace") as file:
    line_number = 1
    for element in file:
        print(line_number)
        print(element)
        line_number += 1
参数说明
  • encoding="latin-1":该编码单字节覆盖0-255全部字符范围,完全兼容ASCII,不会出现字节无法解码的问题,适配绝大多数老式RTF文件的编码规则
  • errors="replace":碰到异常无法识别的字节时,用�占位符替换,不会直接抛出错误打断整个读取流程
  • with语句:无需手动调用file.close(),代码块执行结束后会自动关闭文件,避免资源泄漏

如果后续需要提取RTF内的纯文本内容而非原始带格式标签的内容,可以再引入专门的RTF解析库处理,上述代码已经可以实现逐行读取打印到文件末尾的需求。

内容的提问来源于stack exchange,提问作者Kiko314

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 21:24:30