代码之家  ›  专栏  ›  技术社区  ›  cleg

Django ORM和Unicode数据

  •  2
  • cleg  · 技术社区  · 15 年前

    我使用以下模型存储有关页面的信息:

    class Page(models.Model):
        title = models.TextField(blank = False, null = False)
    

    新数据保存正确,我在那里保存Unicode数据(许多非ASCII标题)。 但当我执行查询时:

    page = Page.objects.filter(id = 1)
    

    page.title看起来很奇怪:

    u'\u042e\u0449\u0435\u043d\u043a\u043e'
    

    我能做错什么? 谢谢。

    更新 :真的,当我打印page.title时-看起来不错。 但我需要将它转储到JSON,所以在这样的代码之后:

    dumps({'title': page.title})
    

    一切看起来都不好。

    更新2 感谢大家,向我指出这是正确的行为。但Unicode转义的strin太长了。我能把它们翻译成UTF-8吗?

    5 回复  |  直到 15 年前
        1
  •  1
  •   Will Hardy    15 年前

    dumps

    >>> from django.utils.simplejson import dumps, loads
    >>> original = u'\u042e\u0449\u0435\u043d\u043a\u043e'
    >>> print original
    Ющенко
    >>> encoded = dumps(original)
    >>> print encoded
    "\u042e\u0449\u0435\u043d\u043a\u043e"
    >>> decoded = loads(encoded)
    >>> print decoded
    Ющенко
    

        2
  •  3
  •   Max Shawabkeh    15 年前

    In [1]: l = u'\u042e\u0449\u0435\u043d\u043a\u043e'
    
    In [2]: print l
    Ющенко
    
        3
  •  2
  •   Max Shawabkeh    15 年前

        4
  •  1
  •   Paul D. Waite    15 年前

    print page.title

        5
  •  1
  •   bobince    15 年前

    >>> print json.dumps(u'\u042e\u0449\u0435\u043d\u043a\u043e')
    "\u042e\u0449\u0435\u043d\u043a\u043e"
    

    Ющенко