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

执行Django makemessages命令时遭遇UTF-8解码错误求助

解决Django makemessages UTF-8解码错误

错误提示中的UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe通常和gettext工具输出编码、系统环境编码,或locale目录下的现有文件编码有关,以下是几个可行的解决方向:

  • 强制指定命令编码参数
    执行makemessages时明确指定编码,覆盖默认设置:

    python manage.py makemessages -l [你的语言代码] --encoding=utf-8
    

    比如针对中文:python manage.py makemessages -l zh_CN --encoding=utf-8

  • 检查并转换locale目录下的现有文件
    之前生成的.po或.mo文件可能带有UTF-16 BOM(字节0xfe通常是UTF-16LE的BOM标识),用文本编辑器打开这些文件,确认编码为UTF-8且无BOM,若不是则重新保存为UTF-8无BOM格式。

  • 调整系统命令行编码(Windows环境)
    Windows默认命令行编码为GBK,可能导致gettext输出编码不兼容,先切换到UTF-8编码再执行命令:

    chcp 65001
    python manage.py makemessages -l zh_CN
    
  • 排除非项目文件目录
    makemessages可能遍历到虚拟环境、缓存目录中的非UTF-8文件,用--exclude参数排除这些目录:

    python manage.py makemessages -l zh_CN --exclude=myvenv --exclude=__pycache__ --exclude=static
    
  • 设置Python IO编码环境变量
    运行命令前设置环境变量,强制Python使用UTF-8处理输出:

    # Windows cmd
    set PYTHONIOENCODING=utf-8
    # Linux/macOS
    export PYTHONIOENCODING=utf-8
    

    之后再执行makemessages命令。

  • 验证gettext工具的输出编码
    手动运行gettext的xgettext命令测试输出编码,比如:

    xgettext --version
    

    若输出包含非UTF-8字符,可能需要更新或重新安装gettext工具,确保其输出为UTF-8。

内容的提问来源于stack exchange,提问作者Emre Türkmen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:06:11