Python格式化工具Black报UTF-8解码错误,如何指定UTF-16编码?
解决Black格式化时的UnicodeDecodeError(0xd2字节问题)
从报错回溯可以明确:错误不是来自你要格式化的settings.py,而是Black在读取项目根目录的.gitignore文件时,遇到了非UTF-8编码的字节(0xd2)。这就是为什么你修改settings.py编码、加魔法头这些操作都没用——方向错了。
解决方案步骤:
验证问题根源
把项目根目录的.gitignore文件临时重命名为.gitignore.bak,然后重新运行Black命令:python -m black --diff settings.py如果命令正常执行,就确认是
.gitignore的编码问题。修复.gitignore编码
- 用Windows记事本打开原
.gitignore文件 - 点击顶部菜单「文件」→「另存为」
- 在弹出的窗口中,将「编码」选择为「UTF-8」,覆盖原文件保存
- 把重命名的
.gitignore.bak替换为新保存的UTF-8版本
- 用Windows记事本打开原
重新运行Black
再次执行格式化命令,应该就能正常工作了。
补充说明:
- 0xd2字节通常属于GBK/GB2312编码,说明你的
.gitignore里可能有中文注释或文件名,是用GBK编码保存的。 - Black官方只支持UTF-8编码的文件(包括配置类文件如.gitignore),没有提供切换编码的选项,所以必须确保相关文件都是UTF-8编码。
- Ruff能正常处理是因为它对gitignore文件的编码兼容性更好,不需要严格UTF-8。
内容的提问来源于stack exchange,提问作者Dick Roman
相关产品推荐
相关产品推荐

