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

为何importlib.resources.read_text仅在Windows抛出UnicodeDecodeError?

问题原因与解决方案

为什么Windows会出现这个错误?

importlib.resources.files.read_text()不指定编码时,Windows会默认使用当前系统的ANSI字符集(比如GBK、CP1252等),而非UTF-8——这和macOS/Linux默认采用UTF-8的行为存在差异。你的UTF-8编码文件里的特殊字符(比如←、•),用Windows系统默认编码解码时自然会触发UnicodeDecodeError。

你提到的0x90字节,在CP1252编码中属于未定义字符,但它是UTF-8编码下某个特殊字符的组成部分,解码失败也就必然发生。

解决方案

直接在read_text()中显式指定编码为utf-8,强制用UTF-8解码,不受系统默认编码影响:

importlib.resources.files(...).read_text(encoding='utf-8')

这样就能保证所有系统环境下都用UTF-8读取文件,彻底解决编码不一致的问题。

关于带变音符号的翻译文件

同理,只要你的翻译文件是UTF-8编码,必须显式指定encoding='utf-8',避免Windows用系统默认编码读取导致变音符号乱码或解码失败。

另外建议确保所有资源文件(JS、翻译文件等)都保存为UTF-8无BOM格式,BOM可能引发额外的编码问题。

内容的提问来源于stack exchange,提问作者Russell Owen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:04:58