python ini文件包含中文时报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x8c 的解决办法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: python ini文件包含中文时报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x8c 的解决办法

一、前置说明


比如你想在pytest.ini文本中使用中文做一些注释说明:

[pytest]
# 在运行 Pytest 时的一些额外选项
# -v 表示详细输出,显示更详细的测试结果
# -s 表示在控制台输出标准输出(print 语句)
addopts = -v -s
# log_cli = 1 表示启用在控制台输出日志,1 表示启用,0 表示禁用
log_cli = 1
# log_cli_level = DEBUG 表示在控制台输出的日志的级别为 DEBUG
log_cli_level = DEBUG
# log_cli_format 定义了在控制台输出的日志的格式
# %(asctime)s 表示日志的时间戳
# %(filename)s 表示产生日志的文件名
# %(lineno)d 表示产生日志的代码行号
# %(funcName)s 表示产生日志的函数名
# %(levelname)s 表示日志的级别(例如,INFO、DEBUG、ERROR)
# %(message)s 表示实际的日志消息
log_cli_format = %(asctime)s - %(filename)s:%(lineno)d - %(funcName)s - %(levelname)s - %(message)s

但是运行时,会提示:

UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x8c in position 20: illegal multibyte sequence


二、解决办法


问题原因:IniConfig类解析文件时没有指定encoding='utf-8'。解决办法就是在错误日志中点击连接跳转至iniconfig的__init__.py文件f = open(self.path)修改为f = open(self.path, encoding='utf-8')

选择强制修改,然后重启IDE即可。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
编解码
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe9 in position 3114: invalid continuation byte
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe9 in position 3114: invalid continuation byte
|
4月前
|
编解码 程序员 开发者
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
3098 0
|
4月前
|
编解码 开发者 Python
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode characters in position 42-43: surrogates
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode characters in position 42-43: surrogates
373 0
|
4月前
|
编解码 开发者 Python
【Python】已解决:SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: t
【Python】已解决:SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: t
427 0
|
Java
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
118 0
|
4月前
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
69 0
|
4月前
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
117 0
|
存储 Java 计算机视觉
java 之byte
当涉及到处理数据时,Java 提供了多种数据类型,其中包括 `byte` 类型。在本文中,我们将深入探讨 Java 中的 `byte` 数据类型,了解它的特点、用途以及在编程中的实际应用。
|
Java
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
93 0
|
存储 Java
[java 基础知识] byte int 互转
[java 基础知识] byte int 互转
131 0