我将项目转移到另一台计算机上,并在运行视图时出错。

我正在获取模型的一些信息,并希望通过使用XMLGenerator将它们保存到XML。

在单台计算机上运行正常,type()中的model.charField()返回“ unicode”

在新计算机上,它不起作用,type()中的model.charField()返回“ str”

工作计算机具有Python 2.7.2

无法正常运行的计算机具有Python 2.5.2

因此,在无法正常运行的计算机上,我没有得到可以由XMLGenerator处理的unicode。我试图通过在模型提供的字符串上运行.decode(“ utf-8”)来解决此问题,并且该字符串有效。

但是我怎么知道字符串是什么编码呢?我猜现在它的编码与数据库中的编码相同,但是对吗?

问候马丁

最佳答案

能否请您检查mysql排序规则设置?如果这些也一样?
来自Django doc:
“在许多情况下,此默认设置不会有问题。但是,如果您确实希望对特定列或表进行区分大小写的比较,则可以更改该列或表以使用utf8_bin归类。要注意的主要事项在这种情况下,如果您使用的是MySQLdb 1.2.2,则Django中的数据库后端将针对从数据库接收到的任何字符字段返回字节字符串(而不是unicode字符串)。”
see django doc collation settings

09-12 10:12
查看更多