当前位置:   article > 正文

Python 报错处理|Windows 默认编码 gbk 不能解析文件报 UnicodeDecodeError 的问题处理_for lineno, line in enumerate(fp, start=1): unicod

for lineno, line in enumerate(fp, start=1): unicodedecodeerror: 'gbk' codec
问题现象

有时当我们拉下 Python 项目运行时,可能出现类似报错:

  File "D:\py\Python38\lib\configparser.py", line 697, in read
    self._read(fp, filename)
  File "D:\py\Python38\lib\configparser.py", line 1017, in _read
    for lineno, line in enumerate(fp, start=1):
UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 108: illegal multibyte sequence
  • 1
  • 2
  • 3
  • 4
  • 5
问题原因

这很可能是因为在 Windows 系统运行时,没有显式地指定 configparser 包的编码,导致 configparser 在调用 Python 内置函数 open 时未指定 encoding 参数,进而导致自动读取了 Windows 的系统默认编码 GBK,进而因为 GBK 无法解析包含 UTF - 8 的中文的配置文件导致报错。

解决方案
解决方案 1:在调用 ConfigParser 的 read 方法时,指定 encoding 参数(有效)。
config_parser = ConfigParser()
config_parser.read(path, encoding="UTF-8")
  • 1
  • 2
解决方法 2:修改 Python 的默认编码(未生效)

通过在命令提示符中执行 chcp 65001 指定 UTF - 8 未默认编码未生效。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/570190
推荐阅读
相关标签
  

闽ICP备14008679号