我敢肯定,这个问题是不特定于Django的,但因为我无法找到我的关于Python和编码等问题,问题的任何解决方案,我要问这个。 我需要新的功能添加到其使用MySQL作为后端PHP编写的现有的网站。 我检查了数据库,并建立模型的表,我要使用。 然而,有一个问题,它的数据 - 已有一半在俄罗斯,和(至少在我看来),它在UTF-8编码。 当我表明,在Django的管理数据,它不会出现正确。
In [52]: p.name
Out[52]: u'\xd0\u02dc\xd0\xb3\xd0\xbe\xd1\u20ac\xd1\u0152 '
In [53]: repr(p.name)
Out[53]: "u'\\xd0\\u02dc\\xd0\\xb3\\xd0\\xbe\\xd1\\u20ac\\xd1\\u0152 '"
在Django管理它显示是这样的:
Игорь
编码是对我来说还是有点神话,但如果我正确地理解这个输出,基本上这些都是以Unicode对象UTF-8字节。
问题:是否有可能在Django的数据库层解决这一问题? 我会在这些表中,以更新现有内容,我需要对现有的PHP前端能够同时与新的数据和旧的兼容。
当我添加这些数据库选项的数据显示在管理员正确, 但是,我保存的东西时,得到UnicodeEncode错误。
DATABASE_OPTIONS = {
'charset': 'latin1',
'use_unicode': False,
}
在这种情况下返回的名字是:
In [2]: p2.name
Out[2]: '\xd0\x9b\xd0\xae\xd0\xa1\xd0\xaf'
我使用UTF-8字符表检查,而这些都是存储该行中的数据正确的字符。