5

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

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

在一台计算机上它工作正常,type()返回model.charField()“unicode”

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

工作计算机有 Python 2.7.2

不工作的计算机有 Python 2.5.2

所以在不工作的计算机上,我没有得到可以由 XMLGenerator 处理的 unicode。我试图通过在模型提供的字符串上运行 .decode("utf-8") 来解决这个问题,并且它有效。

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

问候马丁

4

2 回答 2

5

你能检查一下mysql排序规则设置吗?如果那些也一样?来自 django doc:“在许多情况下,此默认值不会有问题。但是,如果您真的想要对特定列或表进行区分大小写的比较,您可以更改列或表以使用 utf8_bin 排序规则。主要的事情在这种情况下要注意的是,如果您使用的是 MySQLdb 1.2.2,那么 Django 中的数据库后端将为它从数据库接收的任何字符字段返回字节字符串(而不是 unicode 字符串)。” 查看 django doc 排序规则设置

于 2013-01-30T14:56:57.793 回答
0

假设我们有这个:

a = unicode('a')
b = str('b')

快速检查是:

print type(a)
print type(b)

如果你想验证它们,你可以这样做:

if isinstance(a, str):

if isinstance(a, unicode):

一种对内容进行类型转换的方法:

c = str(a)
d = unicode(b)
于 2013-01-30T14:59:01.063 回答