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

Django翻译触发UnicodeDecodeError错误,求解决方案

解决Django国际化中的UnicodeDecodeError问题

我来帮你搞定这个问题!先理清楚核心问题所在:

你执行这段代码时:

return _("%(user)s liked this") % {'user': likes.first().user.get_full_name()}

抛出了错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 11: ordinal not in range(128)

再看你提供的django.po片段,问题一下子就找到了——你的po文件把字符编码设置成了ASCII,但用户全名里包含了非ASCII字符(比如0xc5对应的是像Å这类特殊字符),ASCII编码根本处理不了这些字符,所以解码时直接报错了。

具体修复步骤:

  • 修改po文件的字符编码
    找到po文件里的Content-Type行,把charset=ASCII改成charset=UTF-8(UTF-8支持所有Unicode字符,这是核心修复点):

    "Content-Type: text/plain; charset=UTF-8\n"
    
  • 重新编译翻译文件
    修改完po文件后,一定要运行Django的编译命令让改动生效:

    python manage.py compilemessages
    
  • 确保代码里的字符串处理安全
    如果是使用Python2(从错误信息看大概率是),要确保用户全名是Unicode类型,避免编码冲突:

    return _("%(user)s liked this") % {'user': unicode(likes.first().user.get_full_name())}
    

    要是用Python3就不用额外处理了,默认字符串就是Unicode类型。

  • 检查翻译文本的编码
    如果你已经在po文件里添加了包含特殊字符的翻译内容,要确保po文件本身是用UTF-8编码保存的,别用记事本这类默认存ASCII的编辑器编辑。

这样改完之后,那个UnicodeDecodeError应该就彻底消失啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:17:29