如何解决使用Black格式化Django代码时出现的UTF-8解码0xff报错
问题根源
从你提供的报错回溯可以直接定位问题:报错并非来自你要格式化的.py文件本身有问题,而是出在Black读取项目gitignore规则的环节,这也完全符合你将文件移出目录后运行正常的特征——移动文件后Black不再读取当前目录下编码异常的.gitignore文件。报错栈明确指向black/files.py中get_gitignore方法读取文件行时解码失败,你项目对应目录下的.gitignore文件编码损坏,大概率是多系统(Windows/WSL/Mac)跨设备编辑时,误存储为了带UTF-16 LE BOM的编码,开头的0xff就是UTF-16 LE BOM的首字节,而Black默认按UTF-8编码读取该文件,因此抛出解码错误。
解决步骤
- 首先显示隐藏文件:Mac系统下在项目根目录和
pages目录按Command+Shift+.显示隐藏文件,找到对应目录下的.gitignore文件。 - 修复编码:
- 若文件可以正常打开,全选复制内容,新建一个纯文本文件,粘贴内容后存为UTF-8编码命名为
.gitignore覆盖原文件即可。 - 若文件已经损坏无法打开,直接删除损坏的
.gitignore,新建UTF-8编码的新.gitignore,填入你需要的忽略规则即可。 - 也可以直接通过终端命令转码:
iconv -f UTF-16LE -t UTF-8 .gitignore > .gitignore.new && mv .gitignore.new .gitignore
- 若文件可以正常打开,全选复制内容,新建一个纯文本文件,粘贴内容后存为UTF-8编码命名为
- 修复完成后重新执行
black pages/views.py即可正常运行。
内容的提问来源于stack exchange,提问作者Hambot
相关产品推荐
相关产品推荐

