【问题标题】:django unicode encode/decode errorsdjango unicode 编码/解码错误
【发布时间】:2012-01-28 06:26:08
【问题描述】:

我的网站需要能够以不同语言提供数据。我将其设置为使用 utf-8,并且 db 设置也设置为该值。我在管理员中遇到了不同的 unicode 错误。

例如:

  1. 在管理员列表中,当列表中的字段包含非 ascii 字符时。 (我得到 UnicodeDecodeError)
  2. 添加新条目时,如果模型的 unicode 方法返回 utf-8 解码(修复 #1),则会出现 UnicodeEncodeError。
  3. 在管理员中使用 filter_horizo​​ntal 时,如果使用的模型中的数据包含非 ascii 字符,则过滤器将从表单中消失。

如果我为模型设置 unicode 方法返回例如:

return u'%s' % unicode(self.tag)

这似乎解决了 #1 和 #2,但那是我得到 #3 的时候。

我一直在寻找解决方案,但找不到解决所有不同错误的方法。处理这些问题的最佳方法是什么?

【问题讨论】:

    标签: django unicode internationalization


    【解决方案1】:
    from django.utils.encoding import smart_unicode
    ...
    def __unicode__(self): 
        return smart_unicode(self.tag)
    

    【讨论】:

      【解决方案2】:

      值得注意的是,您可以通过简单地将数据编码为十六进制然后将其存储到数据库中来绕过 unicode。

      这样就足够了

      MyModel(name=name.encode('hex'), password=password).save()

      然后您可以执行name.decode('hex') 将数据返回到之前的表示形式。

      【讨论】:

        猜你喜欢
        • 2014-06-26
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 2016-03-01
        • 1970-01-01
        相关资源
        最近更新 更多