0

我编写了一个基本脚本,将数千个值导入 Django 数据库。这是它的样子:链接

这些位置以西里尔字母表示,并表示为 unicode 文字。但是,一旦我将它们保存到数据库中,它们就会以某种十六进制编码转换为看似编码的简单字符串:

>>> Region.objects.all()[0].parent
'\xd0\xbe\xd0\xb1\xd0\xbb\xd0\xb0\xd1\x81\xd1\x82 \xd0\xa1\xd0\xbb\xd0\xb8\xd0\xb2\xd0\xb5\xd0\xbd'

令人惊讶的是,它们在管理面板中正确显示,但我在尝试使用它们时遇到了麻烦。如何以 Unicode 格式存储和检索它们?

我在 MySQL 上运行 Django 1.4.0,排序规则设置为 utf8_bin。

4

2 回答 2

1

看起来数据是作为 UTF-8 字节字符串而不是 Unicode 字符串返回的。尝试解码:

>>> x='\xd0\xbe\xd0\xb1\xd0\xbb\xd0\xb0\xd1\x81\xd1\x82 \xd0\xa1\xd0\xbb\xd0\xb8\xd0\xb2\xd0\xb5\xd0\xbd'
>>> x.decode('utf-8')
u'\u043e\u0431\u043b\u0430\u0441\u0442 \u0421\u043b\u0438\u0432\u0435\u043d'
>>> print x.decode('utf-8')
област Сливен
于 2012-12-04T23:39:38.017 回答
1

这是 Django/MySQL 的“错误”。请参阅问题#16052。它实际上记录在这里

于 2012-12-04T23:45:13.233 回答