Django i18n编译及Bitbucket推送编码问题求助
Django i18n编译与Bitbucket推送编码问题排查方案
问题1:Django compilemessages 报'latin-1'编码错误
- 强制指定.po文件编码头:打开所有.po文件,确认开头的
Content-Type字段是charset=UTF-8,比如:
若系统默认生成的是latin-1,手动修改成UTF-8。"Content-Type: text/plain; charset=UTF-8\n" - 固定终端环境编码:在Fedora终端执行以下命令,强制设置UTF-8编码后再运行编译命令:
想永久生效的话,把前两行加到export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 python manage.py compilemessages~/.bashrc或~/.zshrc里,重启终端即可。 - 验证并转换.po文件编码:用
file命令检查文件实际编码,比如:
若输出不是UTF-8,用file your_app/locale/es/LC_MESSAGES/django.poiconv转码:iconv -f latin-1 -t UTF-8 django.po > django_new.po && mv django_new.po django.po - 清理编译缓存:删除locale目录下所有
.mo文件,重新编译,避免旧缓存干扰。 - 关于
LANGUAGE_CODE设为'es'偶尔成功:这只是巧合——西班牙语环境下系统临时匹配了编码,不是根本解决办法,核心还是要统一全流程的UTF-8编码设置。
问题2:Bitbucket推送时xkbcommon UTF-8编码错误
- 修正系统区域编码:用
localectl status查看当前区域设置,若不是UTF-8,执行以下命令永久修改:
重启系统或终端生效。sudo localectl set-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 - 配置Git全局编码:执行以下命令强制Git用UTF-8处理所有文件和提交信息:
git config --global core.encoding UTF-8 git config --global gui.encoding UTF-8 git config --global i18n.commitencoding UTF-8 git config --global i18n.logoutputencoding UTF-8 - 调整PyCharm终端编码:打开PyCharm的
Settings → Tools → Terminal,在Shell path对应的终端配置里添加环境变量LC_ALL=en_US.UTF-8,或者直接在PyCharm内置终端里先执行export LC_ALL=en_US.UTF-8再推送代码。 - 归一化仓库文件编码:执行以下命令让Git重新识别所有文件的UTF-8编码,然后提交:
git add --renormalize . git commit -m "Normalize file encodings to UTF-8"
内容的提问来源于stack exchange,提问作者Alvar
相关产品推荐
相关产品推荐

