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

Blender插件枚举属性含变音字符文件名显示异常问题求助

根因分析

Windows系统默认使用ANSI编码处理文件路径,pathlib读取文件名时会默认采用系统编码返回字符串,而Blender UI全局使用UTF-8编码渲染文本,两种编码不匹配就会出现变音字符乱码。控制台输出时会自动适配系统编码,所以不会出现显示异常。你手动创建的字符串默认是UTF-8编码,因此在Blender UI中可以正常显示。

修复方案

修改原有代码,对读取到的文件名做显式编码转换,适配Blender的UTF-8环境,同时优化索引获取逻辑避免错误:

# get files with path
p = Path(directory).glob('*.py')
files_with_path = [f for f in p if f.is_file()]
# 读取文件名时显式转成UTF-8编码
files = [f.stem.encode('cp1252', errors='replace').decode('utf-8', errors='replace') for f in files_with_path]
# replace underlines with empty space for UI
files_UI = [f.replace('_',' ') for f in files]
    
# create list to return (needed: index number, name, description)
EnumItems = []
# 用enumerate直接获取索引,避免index方法的性能问题和重复值错误
for idx, f in enumerate(files_UI):
    EnumItems.append((str(idx), f, 'Render Presets'))
补充说明
  • 如果上述修复仍有乱码,可以把编码转换的源编码cp1252替换为你Windows系统的当前代码页:中文系统通常为gbk,西欧系统为cp1252
  • 如果传入的directory路径本身包含特殊字符,可以先对directory字符串做同样的编码转换再传入Path构造函数
  • 原代码中使用list.index()获取索引的逻辑存在性能问题,且遇到重名文件时会返回错误索引,推荐统一使用enumerate遍历获取索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:05