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

Python脚本读取文件时出现UnicodeDecodeError解码错误求助

UnicodeDecodeError 问题分析与解决

你完全找对问题的根源了!就是这个read_str函数里的str_value.decode('utf-8')语句导致了解码错误。

为什么会报错?

从报错信息来看,程序尝试用UTF-8编码解码字节0xa5,但这个字节并不是有效的UTF-8起始字符——UTF-8的单字节字符范围是0x00-0x7F,0xa5属于多字节编码的片段,单独出现时不符合UTF-8的编码规则,自然会触发解码失败。

至于之前正常运行突然出错,大概率是输入的license_usage.bin文件内容发生了变化:可能是日志生成端写入了非UTF-8编码的字符,或者文件本身混入了其他编码的内容(比如GBK编码的字符,0xa5在GBK中是某些字符的组成部分)。

怎么修复?

这里给你几个可行的修复方案:

  • 方案一:忽略无效字符
    如果这些无法解码的字节不影响核心业务数据,可以在解码时添加错误忽略参数,跳过无效字符:

    return str_value.decode('utf-8', errors='ignore')
    
  • 方案二:尝试其他编码格式
    猜测日志文件可能使用了其他编码(比如GBK、Latin-1),可以替换解码格式试试:

    # 尝试GBK编码(适合中文环境下的日志)
    return str_value.decode('gbk')
    # 或者用Latin-1(会把每个字节直接映射成对应字符,不会报错)
    return str_value.decode('latin-1')
    
  • 方案三:先确认文件编码
    在Cygwin或Ubuntu终端里用file命令查看文件的实际编码:

    file license_usage.bin
    

    根据命令输出的编码信息,替换对应的解码格式即可。

额外建议

因为脚本之前能正常运行,说明之前的日志都是标准UTF-8编码,现在出现异常字节,你也可以同步排查日志生成的源头(比如写入日志的客户端是否有编码变更),从根源避免类似问题重复出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:10:40