【发布时间】:2011-05-18 20:36:52
【问题描述】:
在我的数据库中,我存储了一些 UTF-8 字符。例如。 “名称”字段中的“α”
通过 Django ORM,当我读到这个时,我得到了类似的东西
>>> p.name
u'\xce\xb1'
>>> print p.name
α
我希望得到“α”。
经过一番挖掘,我想如果我这样做了
>>> a = 'α'
>>> a
'\xce\xb1'
所以当 Python 试图显示 '\xce\xb1' 时,我得到了 alpha,但是当它试图显示 u'\xce\xb1' 时,它是双重编码?
为什么我首先得到 u'\xce\xb1'?有没有办法让我恢复 '\xce\xb1'?
谢谢。我的 UTF-8 和 unicode 处理知识确实需要一些帮助...
【问题讨论】:
-
您是否真的将 UTF-8 存储到数据库中?这不太好......
-
你得到一个包含字节串的 unicode 文字。某处有问题 - 您是否对其进行编码然后将其存储在 unicode 字段中?如果您需要取回这些值,
p.name..encode("iso-8859-1").decode("utf-8")应该这样做,但这并不能真正解决问题。 -
@IgnacioVazquez-Abrams 嗨,如果您有时间回答,当您需要将 utf - 8 编码的 unicode 符号存储到数据库时,您还有哪些其他选择?
-
@KonstantinosChertouras:不要。正确使用数据库的本地国际字符支持。
标签: python django unicode encoding utf-8