sktime库和Windows中文操作系统默认编码
今天在使用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年了,还能碰到这种问题。没办法,只好把操作系统的默认编码给改了吧:
修改完毕、重启系统后,就不再出现这个问题了。
文章紧扣主题,观点鲜明,展现出深刻的思考维度。
文字如刀,剖开表象直抵本质。
技术伦理的探讨体现人文科技平衡意识。