今天在使用sktime库的时候遇到了解码失败的问题:

from sktime.datasets import load_airline

报错类似于:

{
    "name": "UnicodeDecodeError",
    "message": "'gbk' codec can't decode byte 0xb8 in position 4507: illegal multibyte sequence",
    "stack": "---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
Cell In[19], line 1
----> 1 from sktime.datasets import load_airline

显然这是个编码问题,我第一时间检查了VSCode中的默认编码,确保是utf-8无误。

于是我怀疑大概率是程序编码出了问题,试了修改默认编码:

import os
import sys
import locale

# 设置全局默认编码为 UTF-8
os.environ["PYTHONIOENCODING"] = "utf-8"
sys.getdefaultencoding = lambda: "utf-8"
locale.getpreferredencoding = lambda: "UTF-8"

然而并不起作用。

一番搜索又发现今年二月份有人修了个bug#5998,其中提到了为 load_from_tsfile()增加了一个默认参数encoding=utf-8,不过这个commit并没有为load_airline()函数增加编码参数。另一方面,我在导入模块的时候就自动报错了:即使是 from sktime import datasets 都会报同样的错误。

我想起了opencv有个奇怪的bug:路径下不能有中文,否则输出的图像什么的都是空的,静悄悄的也不报错,就是结果不正确。

哎,想不到马上2025年了,还能碰到这种问题。没办法,只好把操作系统的默认编码给改了吧:

截图-Windows使用UTF-8.PNG

修改完毕、重启系统后,就不再出现这个问题了。

标签: none

已有 3 条评论

  1. 文章紧扣主题,观点鲜明,展现出深刻的思考维度。

  2. 文字如刀,剖开表象直抵本质。

  3. 技术伦理的探讨体现人文科技平衡意识。

添加新评论